更新 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 的多条记录中选择数据

使用 for 循环将多条记录插入 SQL Server 数据库

sql server返回插入记录的ID(多条记录)

SQL Server 仅更新组中的最新记录

我想使用 CASE 语句来更新 sql server 2005 中的一些记录