在SQL Server中更新多个记录

在SQL Server中更新多个记录,sql,sql-server,sql-update,Sql,Sql Server,Sql Update,我正在尝试更新SQL Server中的客户机表,其中需要更改450个不同客户机的到期日期 所有450个客户的新到期日应相同 我的想法大致如下: UPDATE Clients SET SmartCardExpiry = 20200123 WHERE ClientId IN (*ClientID's for all 450 clients separated by a comma*) 这是正确的方法吗 正如我在您的问题正文中看到的,您在传递日期值时缺少了一个引号。所以,应该是这样 UPDATE C

我正在尝试更新SQL Server中的客户机表,其中需要更改450个不同客户机的到期日期

所有450个客户的新到期日应相同

我的想法大致如下:

UPDATE Clients
SET SmartCardExpiry = 20200123
WHERE ClientId IN (*ClientID's for all 450 clients separated by a comma*)

这是正确的方法吗

正如我在您的问题正文中看到的,您在传递日期值时缺少了一个引号。所以,应该是这样

UPDATE Clients
SET SmartCardExpiry = '20200123'
要在where条件中传递以逗号分隔的值,可以使用函数

WHERE ClientId IN (SELECT 
    value  
FROM 
    STRING_SPLIT('1, 2, 5', ','))

虽然在较低版本的SQL Server中不可用,但您可能需要为where条件中的单独值和传递值编写自定义查询。

是的,这将起作用。您也可以执行
。。。WHERE ClientId IN(选择ClientId from…
。当您试图在WHERE条件中传递逗号分隔的值时,需要实现逻辑来分隔逗号分隔的值。可以使用string_split()函数。您还可以在临时表中添加客户机id,然后使用该id选择客户机id。