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


94

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

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


1
使用stackoverflow.com/questions/1535469/…标记为重复项?它还具有完整的解决方案
Brad

3
@Brad-仅当您使用单个表(即无联接)时,链接到的问题的答案才有效。一旦开始加入2或3个表,就无法再执行此操作。如果还有其他解决方案,那将很有趣。
弗朗西斯·罗杰斯

2
请阅读下面的@Yves Martin答案,以了解替代JOINED表的替代方法。
jaredbaszler,2015年

Answers:


86

您可以执行类似您想要的操作。右键单击一个表,然后选择“编辑前200行”(如果您使用的是SQL Server 2008)或选择“打开表”(在SQL Server 2005中)。单击它时,它使您可以编写SQL语句,如果单击要更改的单元格,则可以编辑它的结果。


1
这是2019年,最新版本是SSMS 2017,仍应使用相同的方法来编辑网格单元!如此糟糕的UI设计!
S.Serpooshan

78

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

在此处输入图片说明

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

在此处输入图片说明


25

您可以通过以下方式执行此操作:

  • 将您选择的查询变成视图
  • 在视图上单击鼠标右键,然后选择Edit All Rows (您将获得一个可编辑的值网格-即使这些值来自不同的表)。

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


1
+1-这是编辑已联接表的最佳和最简便的方法。尽管完成这项任务的工作量太大,但这是我找到的唯一方法。
jaredbaszler,2015年

您无法编辑JOINED表。仅非JOIN SQL语句。当我有一个JOIN时,我所有的单元格都无法编辑。
Charles Robertson


17

不可以。您无法编辑结果表格。结果网格主要用于显示您执行的查询的目的。

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

我希望能回答您的问题。


6
我不明白为什么人们会拒绝您的回答。它实际上是正确的。一旦在查询中使用联接,就无法使用到目前为止任何答案中建议的方法来编辑结果。向我+1。
弗朗西斯·罗杰斯

您可以将查询复制到编辑网格SQL窗格,这是其他答案所暗示的。
丹妮丝·斯基德莫尔'18

17

给出的答案仍然有效。在这方面,SSMS(SQL Server 2016)尚未进行任何更改。

完成“编辑前200行”后,您也可以使用条件窗格。

编辑前200个上下文菜单

  1. 显示条件窗格
  2. 输入一些条件
  3. 直接在结果网格中编辑数据

打开条件窗格

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

在此处输入图片说明


10

更新
,您将在学习答案中看到正确的解决方案,在SQL Server Management 2014中,您可以1.
单击“ 编辑前200行
,然后
2.单击“ 显示SQL窗格(ctrl + 3) ”,
然后
3. 删除顶部( 200)从选择查询


请参阅申兰斯答案,无法编辑选择查询的结果。其他答案仅适用于常规选择,仅适用于200条记录。


5

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

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

伊夫·马丁(Yves Martin)的回答是100%正确!


5

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

但请注意,这仅对不包含“ join”的查询有效


4

首先,右键单击故事,选择“编辑所有行”,选择“查询设计器->窗格-> SQL”,之后您可以在网格中编辑查询输出。


3

如果您需要经常在SQL数据库上执行单元内编辑,则HeidiSQL可以发挥作用,使用起来再简单不过,并且是免费的/开源的(接受捐赠)。

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


3

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


这帮助了点燃。
阿萨德·阿里

2

如果查询是作为视图编写的,则可以编辑视图并更新值。并非所有视图都可以更新值。仅适用于特定视图。有关更多信息,请参见通过View MSDN链接修改数据。您可以为查询创建视图并编辑200行,如下所示:

在此处输入图片说明


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

0
  1. 要明确:选项“编辑前行的值”选项与结果集是否可编辑无关。这只是限制结果集的一种方法。

  2. 很显然,总是可能只基于一个表来编辑查询的结果集。

  3. 基于多个表的查询结果集可能处于以下情况:如果它们属于查询中的一个且仅基于一个表,则可以一次编辑结果集中的字段!如果这些字段是主键,则必须在每次更新行后执行刷新/“执行SQL”(Ctrl + R),以便下次可以编辑行。如果这些字段不是主键,则不需要执行刷新/“执行SQL”(Ctrl + R)。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.