更新 SQL Server 中的多条记录
Posted
技术标签:
【中文标题】更新 SQL Server 中的多条记录【英文标题】:Updating multiple records in SQL Server 【发布时间】:2020-01-23 09:53:59 【问题描述】:我正在尝试更新 SQL Server 中的一个客户端表,我需要更改 450 个不同客户端的到期日期。
所有 450 个客户的新到期日期应相同。
我的想法是这样的:
UPDATE Clients
SET SmartCardExpiry = 20200123
WHERE ClientId IN (*ClientID's for all 450 clients separated by a comma*)
这是正确的方法吗?
【问题讨论】:
是的,可以的。 你也可以... WHERE ClientId IN (select ClientID from ...)
.
当您尝试在 where 条件下传递逗号分隔值时,您需要实现逻辑来分隔该逗号分隔值。您可以使用 string_split() 函数。 sqlservertutorial.net/sql-server-string-functions/…
您也可以在临时表中添加客户端 ID,然后使用它来选择客户端 ID。
【参考方案1】:
正如我在您的问题正文中看到的那样,您在传递日期值时缺少单引号。所以,会的。
UPDATE Clients
SET SmartCardExpiry = '20200123'
要在以逗号分隔的 where 条件中传递值,您可以使用 STRING_SPLIT() 函数。
WHERE ClientId IN (SELECT
value
FROM
STRING_SPLIT('1, 2, 5', ','))
虽然String_Split() 在较低版本的 SQL Server 中不可用,因此您可能需要编写自定义查询以在 where 条件中单独传递值。
【讨论】:
以上是关于更新 SQL Server 中的多条记录的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 中使用 value() 从 xml 列获取多条记录
从 SQL Server 中具有公共 ID 的多条记录中选择数据