如何在 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
...