如何在 SQL Server Management Studio 中编辑多个 rows/data 条目
How to edit MULTIPLE rows/data entries in SQL Server Management Studio
我想使用 SQL Server Management Studio update/edit 数据库中的多行。我知道您可以使用 Edit Top(200) 功能使用 here, here or here 提供的解决方案编辑一个条目。但我想编辑 >100 个条目,所以这不是一个合适的解决方案。我正在使用 SSMS 2012。
编辑:
作为一个简化的例子,我们可以看下面的情况:
我有一个关于人名和身高的数据库。但是很多高度是错误的或者没有更新。所以我想更新他们的身高。这次更新涉及的人很多,用我链接的方案一个一个更新也很繁琐。我必须更新存储在 Excel 文件中的值。
我不确定如何解决这个问题,但正在寻找一种方法,可以将更新后的值直接复制粘贴到表中,或者使用一些 sql 语句间接执行此操作。
如果您先 select 编辑前 200 行,然后您可以将查询修改为 return 250 行。
为此,您需要单击左上角的 Show SQL Pane 按钮, 新查询 按钮下方。
在您的查询中 window 将 200 更改为 250 并按 Ctrl + R 刷新。
但是,如果您确实需要更新此行数,您可能应该使用原始 SQL 并编写适当的 UPDATE 语句。
编辑:
在您描述的情况下,我通常会在 Excel 中创建单独的 UPDATE 语句,然后将整个语句复制到 SQL 中执行:
您实际上可以将 excel 的内容直接粘贴到 ssms editable 数据网格中。您可以轻松地将 ssms "tools > options > Sql Server object explorer" 部分中可供编辑的行数更改为 return 您需要编辑的 250 行。
正如杰里所说,虽然编写 t-sql 语句可能更容易,但在 w3schools
上有一个关于 sql 更新语句的快速入门
编辑:根据评论中的讨论,这里是如何根据另一个 table 的值更新 table。我把原来的答案留在上面了
如果您可以访问具有正确值的 table @myTable,并且此 table 有两列(姓名、身高),您可以从
进行更新
UPDATE t
SET Height = temp.Height
FROM TableIWantToUpdate t
JOIN @myTable temp ON temp.Name = t.Name
EDIT2:根据要求,这里是代码的细分
UPDATE t
表示更新 FROM + JOIN 子句中别名为 "t" 的 table
SET Height = temp.Height
这里我们将 tabled 别名 "t" 的列高度设置为 table 别名 temp 中列高度的值。 "t" 别名是隐含的,因为它已在 UPDATE 语句
中指定
JOIN @myTable temp on temp.Name = t.Name
基本上我们正在创建一个我们想要更新的记录列表,也就是说 table "t" 中与 table "temp" 中的记录匹配的每条记录将相应更新。
至于在示例中别名为 "temp" 的 @myTable 中的值,您可能可以像这样 SQL 得到它
DECLARE @myTable TABLE (name varchar, height properNumericType)
INSERT INTO @myTable (name, height)
SELECT 'John', 5.6
UNION
SELECT 'Mary', 5.4
UNION
...
我想使用 SQL Server Management Studio update/edit 数据库中的多行。我知道您可以使用 Edit Top(200) 功能使用 here, here or here 提供的解决方案编辑一个条目。但我想编辑 >100 个条目,所以这不是一个合适的解决方案。我正在使用 SSMS 2012。
编辑:
作为一个简化的例子,我们可以看下面的情况: 我有一个关于人名和身高的数据库。但是很多高度是错误的或者没有更新。所以我想更新他们的身高。这次更新涉及的人很多,用我链接的方案一个一个更新也很繁琐。我必须更新存储在 Excel 文件中的值。
我不确定如何解决这个问题,但正在寻找一种方法,可以将更新后的值直接复制粘贴到表中,或者使用一些 sql 语句间接执行此操作。
如果您先 select 编辑前 200 行,然后您可以将查询修改为 return 250 行。
为此,您需要单击左上角的 Show SQL Pane 按钮, 新查询 按钮下方。
在您的查询中 window 将 200 更改为 250 并按 Ctrl + R 刷新。
但是,如果您确实需要更新此行数,您可能应该使用原始 SQL 并编写适当的 UPDATE 语句。
编辑:
在您描述的情况下,我通常会在 Excel 中创建单独的 UPDATE 语句,然后将整个语句复制到 SQL 中执行:
您实际上可以将 excel 的内容直接粘贴到 ssms editable 数据网格中。您可以轻松地将 ssms "tools > options > Sql Server object explorer" 部分中可供编辑的行数更改为 return 您需要编辑的 250 行。
正如杰里所说,虽然编写 t-sql 语句可能更容易,但在 w3schools
上有一个关于 sql 更新语句的快速入门编辑:根据评论中的讨论,这里是如何根据另一个 table 的值更新 table。我把原来的答案留在上面了
如果您可以访问具有正确值的 table @myTable,并且此 table 有两列(姓名、身高),您可以从
进行更新UPDATE t
SET Height = temp.Height
FROM TableIWantToUpdate t
JOIN @myTable temp ON temp.Name = t.Name
EDIT2:根据要求,这里是代码的细分
UPDATE t
表示更新 FROM + JOIN 子句中别名为 "t" 的 table
SET Height = temp.Height
这里我们将 tabled 别名 "t" 的列高度设置为 table 别名 temp 中列高度的值。 "t" 别名是隐含的,因为它已在 UPDATE 语句
中指定JOIN @myTable temp on temp.Name = t.Name
基本上我们正在创建一个我们想要更新的记录列表,也就是说 table "t" 中与 table "temp" 中的记录匹配的每条记录将相应更新。
至于在示例中别名为 "temp" 的 @myTable 中的值,您可能可以像这样 SQL 得到它
DECLARE @myTable TABLE (name varchar, height properNumericType)
INSERT INTO @myTable (name, height)
SELECT 'John', 5.6
UNION
SELECT 'Mary', 5.4
UNION
...