【问题标题】:How to edit MULTIPLE rows/data entries in SQL Server Management Studio [closed]如何在 SQL Server Management Studio 中编辑多个行/数据条目 [关闭]
【发布时间】:2015-02-05 15:21:29
【问题描述】:

我想使用 SQL Server Management Studio 更新/编辑数据库中的多行。我知道您可以使用提供的解决方案 hereherehere 使用 Edit Top(200) 功能编辑一个条目。但我想编辑 >100 个条目,所以这不是一个足够的解决方案。我正在使用 SSMS 2012。

编辑:

作为一个简化的例子,我们可以看看以下情况: 我有一个人名和身高的数据库。但是很多高度是错误的或者没有更新。所以我想更新他们的身高。本次更新包括很多人,使用我链接的解决方案一一更新很繁琐。我必须更新存储在 Excel 文件中的值。

我不确定如何解决这个问题,但正在寻找一种方法,可以将更新的值直接复制粘贴到表中,或者使用一些 sql 语句间接执行此操作。

【问题讨论】:

  • 查看我的问题的更新版本。
  • 我的问题已被搁置,因为声称我寻求调试帮助而没有提供有关代码/不良行为等的足够信息。事实并非如此,我很难理解为什么人们会想这个。我的问题是我不知道如何开始解决或编写解决方案,因此我没有代码可提供。我会尽量让这一点更清楚。

标签: sql sql-server edit ssms


【解决方案1】:

如果您先选择编辑前 200 行,则可以修改查询以返回 250 行。

为此,您需要点击左上角新查询显示 SQL 窗格按钮/em> 按钮。

在您的查询窗口中将 200 更改为 250 并按 Ctrl + R 刷新。

但是,如果您确实需要更新此数量的行,您可能应该使用原始 SQL 并编写正确的 UPDATE 语句。

编辑:

在您描述的情况下,我通常在 Excel 中创建单独的 UPDATE 语句,然后复制整个语句以在 SQL 中执行:

【讨论】:

  • 我是 SSMS 新手,如何编写正确的更新语句?我要更新的值存储在 Excel 文件中。
【解决方案2】:

实际上,您可以将内容与 Excel 直接粘贴到 ssms 可编辑数据网格中。您可以在 ssms 的“工具 > 选项 > Sql Server 对象资源管理器”部分轻松更改可编辑的行数,以返回您需要编辑的 250 行。

正如 jerry 所说,虽然编写 t-sql 语句可能更容易,但在 w3schools 上有一个关于 sql 更新语句的快速入门

编辑:根据 cmets 中的讨论,这里是如何根据另一个表中的值更新表。我已经在上面留下了原来的答案

如果您可以访问具有正确值的表 @myTable,并且该表有两列(名称、高度),您可以从 FROM 进行更新

UPDATE t
SET Height = temp.Height
FROM TableIWantToUpdate t
JOIN @myTable temp ON temp.Name = t.Name

EDIT2:根据要求,这里是代码的细分

UPDATE t

表示更新FROM + JOIN子句中别名为“t”的表

SET Height = temp.Height

这里我们将表别名“t”的列Height设置为表别名temp中列Height的值。 "t" 别名是隐含的,因为它已在 UPDATE 语句中指定

JOIN @myTable temp on temp.Name = t.Name

基本上,我们正在创建一个要更新的记录列表,表示表“t”中与表“temp”中的记录匹配的每条记录都将相应更新。

至于示例中@myTable 别名为“temp”的值,您可能可以通过类似这样的 SQL 得到它

DECLARE @myTable TABLE (name varchar, height properNumericType)
INSERT INTO @myTable (name, height)
SELECT 'John', 5.6
UNION
SELECT 'Mary', 5.4
UNION
...

【讨论】:

  • 感谢您的链接。这可能会起作用,但我想不出一个简单的方法来使用它。对于我在名称/高度数据库问题中的示例,如何使用一个 t-sql 语句更新多个高度?看来我当时只能更新一个名称对应的一个高度。
  • 要么编写多个语句并使用名称上的 WHERE 子句过滤更新的记录,要么深入研究 CASE WHEN 构造以充当 WHERE 子句
  • 感谢您的链接。这可能会起作用,但我想不出一个简单的方法来使用它。对于我在名称/高度数据库问题中的示例,如何使用一个 t-sql 语句更新多个高度?看来我当时只能更新一个名称对应的一个高度。我在想可以通过指定一个高度值数组来排序搜索然后更新所有行吗?或者写一个名字/高度数组来更新?类似于插入数据,例如插入 db(names,height) 值 (Jon,6.1), (Eve,5.6),.....
  • 好的。所以不可能把它放到某种循环中?
  • 您可以使用 WHILE 循环,但我看不出它比简单地使用对象资源管理器中的编辑表选项从 excel 复制最新数据更容易
猜你喜欢
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 2017-12-09
  • 2010-12-04
  • 1970-01-01
相关资源
最近更新 更多