如何在 SQL Server Management Studio 中编辑结果网格中的数据

Posted

技术标签:

【中文标题】如何在 SQL Server Management Studio 中编辑结果网格中的数据【英文标题】:How to edit data in result grid in SQL Server Management Studio 【发布时间】:2010-12-28 03:33:52 【问题描述】:

一旦我在结果网格中获得查询输出,我想编辑一些行值。 确实,我们可以右键单击表格并说打开表格以获得可编辑的表格输出,但我想要的是可编辑的查询输出,只有某些符合我的条件的行,然后在结果网格中编辑它们。

这可以在 Microsoft SQL Server Management Studio Express 中实现吗?

【问题讨论】:

用***.com/questions/1535469/…标记为重复?它还有一个完整的解决方案 @Brad - 链接到的问题的答案仅在您使用单个表时才有效,即没有连接。一旦你开始加入 2 或 3 个表,你就不能再这样做了。如果有其他解决方案会很有趣。 阅读下面的@Yves A Martin 回答,了解编辑已加入的表的替代方法。 【参考方案1】:

是的,这是可能的。右键单击表格并单击Edit Top 200 Rows,如下图所示

然后单击结果网格内的任意位置,以启用 SQL 图标“显示 Sql 窗格”。这将为您选择编辑的表打开 sql 编辑器,您可以在此处编写自己的 sql 查询,然后您可以直接编辑查询的结果集。

【讨论】:

【参考方案2】:

你可以做一些你想做的事情。右键单击表并选择“编辑前 200 行”(如果您使用的是 SQL Server 2008)或 SQL Server 2005 中的“打开表”。到达那里后,顶部有一个按钮,上面写着“SQL”;当你点击它时,它可以让你编写一个 SQL 语句,如果你点击一个你想改变的单元格,你可以编辑它的结果。

【讨论】:

这是2019,它的最新版本是SSMS 2017,仍然应该使用相同的方法来编辑网格单元!这么糟糕的 UI 设计!【参考方案3】:

您可以通过以下方式做到这一点:

将您的选择查询转换为视图 右键单击视图并选择Edit All Rows(您将获得一个可以编辑的值网格 - 即使这些值来自不同的表)。

您还可以将插入/更新触发器添加到您的视图中,这将允许您从视图字段中获取值,然后使用 T-SQL 来管理对多个表的更新。

【讨论】:

+1 - 这是编辑已加入的表的最佳和最简单的方法。虽然完成这项任务的工作量太大,但这是我能找到的唯一方法。 您不能编辑 JOINED 表。只有非 JOIN SQL 语句。当我有一个 JOIN 时,我所有的单元格都是不可编辑的。【参考方案4】:

SSMS - 编辑 200 的右键单击结果 |选项 |窗格 | SQL - 编辑语句。

【讨论】:

SSMS 2014,跳过“选项”步骤。【参考方案5】:

给出的答案仍然有效。 SSMS (SQL Server 2016) 在这方面没有任何变化。

您还可以在“编辑前 200 行”之后使用条件窗格。

    显示条件窗格 输入一些标准 直接在结果网格中编辑数据

此外,这些命令的行数可以在您的 SSMS 选项中自定义。

【讨论】:

【参考方案6】:

没有。您无法编辑结果网格。结果网格主要用于显示您执行的查询。

这是因为任何人都可以执行复杂的查询。希望在下一个版本中,它们将包含这种功能。

希望能回答你的问题。

【讨论】:

我不明白为什么人们对你的答案投了反对票。它实际上是正确的。在查询中使用联接后,您无法使用迄今为止任何答案中建议的方法编辑结果。来自我的 +1。 您可以将查询复制到编辑网格 SQL 窗格,这是其他答案所暗示的。【参考方案7】:

更新 正如您在Learning 答案中看到的正确解决方案, 在 SQL Server 管理 2014 中,您可以 1.点击“编辑前 200 行” 然后 2.点击“显示 SQL 窗格 (ctrl+3)” 和 3.从选择查询中删除 TOP (200)


参考沉兰斯的回答 没有办法编辑选择查询的结果。其他答案仅适用于普通选择,仅适用于 200 条记录。

【讨论】:

【参考方案8】:

只需选择“编辑前 200 行”,在编辑网格区域按 Ctrl + 3(或单击“显示 SQL 窗格”)并编辑查询...

但请注意,这仅适用于不包含“join”的查询

【讨论】:

【参考方案9】:

是的,您可以编辑连接的结果。 (至少在 SSMS 2008 R2 中)在使用连接的视图中编辑任何结果值后,您需要再次执行查询以刷新结果。

您还需要确保将 SSMS 配置为允许“编辑所有行”...在 SSMS - 工具 | 中执行此操作选项 | SQL Server 对象资源管理器 |命令...展开表和视图选项...在“编辑前 n 行命令的值”中输入值 0 ...也可以为选择执行此操作。

Yves A Martin 的回答是 100% 正确的!

罗伯

【讨论】:

【参考方案10】:

首先右键点击故事选择'Edit All Rows',选择'Query Designer -> Pane -> SQL',然后可以在网格中编辑查询输出。

【讨论】:

【参考方案11】:

如果您需要经常对 SQL 数据库执行单元格内编辑,HeidiSQL 是一种享受,使用起来再简单不过,而且是免费/开源的(接受捐赠)。

最初为 mysql 编写,现在可以处理 SQL Server,并且还具有实验性(截至 2014 年 8 月)PostgreSQL 支持。

【讨论】:

【参考方案12】:

如果有连接或使用多个 dB,则右键单击您感兴趣的 dB 中的任何表或使用 master 的服务器中的任何数据库。选择“编辑前 200 行”。选择任务栏中的“SQL”按钮。将您的代码复制并粘贴到现有代码上,然后再次运行。现在您可以编辑查询的结果集。雪利酒 ;-)

【讨论】:

帮助了一点。 我真的希望这对我有用,但我的查询包含一个 where 子句,导致此视图中的结果为 0。在标准视图中,它返回条目。【参考方案13】:

如果查询是作为视图编写的,您可以编辑视图并更新值。并非所有视图都可以更新值。仅适用于特定视图。请参阅Modifying Data Through View MSDN Link 了解更多信息。您可以为查询创建视图并编辑 200 行,如下所示:

【讨论】:

为什么这里有反对票。该问题并非特定于表格编辑。问题是,我们如何编辑他得到的任何查询输出的结果集网格。我建议,如果可能的话,他可以为查询创建视图并编辑行。【参考方案14】:

    需要明确:“编辑前行命令的值”选项与结果集是否可编辑这一事实无关。这只是限制结果集的一种方式。

    基于一个且仅一个表编辑查询的结果集显然总是可行的。

    基于多个表的查询的结果集可能处于以下条件: 如果结果集中的字段属于查询中的一个且仅一个基于表,您可以立即编辑它们!如果字段是主键,那么您必须在每次更新行后完成刷新/“执行 SQL”(Ctrl+R),以便下次能够编辑行。如果字段不是主键,则不需要执行刷新/“执行SQL”(Ctrl+R)。

我已经在 SQL Server 2008 - 2016 上测试过了!

【讨论】:

以上是关于如何在 SQL Server Management Studio 中编辑结果网格中的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQL Server Management Studio (2008) 在 SQL Server Compact Edition 中创建列

如何在 SQL Server Management Studio 中管理 SQL CE 数据库?

如何在 SQL Server Management Studio 中加入 3 列?

如何在 SQL Server Management Studio 中查看查询历史记录

我用sql server 2008 management studio 连接 sql server 2005, 提示4064错误,请问如何解决?

如何在 Microsoft SQL Server Management Studio 2014 中更新表