基于列表更新
Updating Based on List
我需要停用一群用户。我有一个这样的列表(示例):
N0120454
N0219746
N0074342
N0203867
N0155928
N0025471
N0017467
N0239158
N0191759
N0007671
UPDATE dbo.Users
set IsActive = 0, IsLocked = 1
where UserName = 'N0007671'
有没有一种方法可以在不通过 UserId 执行 UserId 的情况下执行此操作?
可能正在使用 in operator
UPDATE dbo.Users
set IsActive = 0, IsLocked = 1
where UserName in( 'N0007671', 'N0219746', 'N0074342' ...)
如果您的值在数据库中 table,您有 2 种方法可以做到这一点
1 - 使用 IN
UPDATE dbo.Users
SET IsActive = 0, IsLocked = 1
WHERE UserName IN ( SELECT username
FROM your_table
WHERE conditions )
2- 使用 EXISTS
UPDATE dbo.Users
SET IsActive = 0, IsLocked = 1
WHERE EXISTS ( SELECT NULL
FROM your_table yt
WHERE yt.username = dbo.Users and others_conditions )
你可以做到:
where UserName in ('N0007671', 'N0219746' ... )
如果您有硬编码列表,最简单的方法是:
UPDATE dbo.Users
set IsActive = 0, IsLocked = 1
where UserName IN ('N0120454', 'N0219746', 'N0074342',
'N0203867', 'N0155928', 'N0025471',
'N0017467', 'N0239158', 'N0191759', 'N0007671')
如果您希望传入包含一堆的单个字符串值,那么循环遍历应用程序中的值会更简单。否则,您将需要使用动态 SQL,或编写一个将字符串解析为多个值并使用临时 table 加入的函数。既不标准也不漂亮。
我需要停用一群用户。我有一个这样的列表(示例):
N0120454 N0219746 N0074342 N0203867 N0155928 N0025471 N0017467 N0239158 N0191759 N0007671
UPDATE dbo.Users
set IsActive = 0, IsLocked = 1
where UserName = 'N0007671'
有没有一种方法可以在不通过 UserId 执行 UserId 的情况下执行此操作?
可能正在使用 in operator
UPDATE dbo.Users
set IsActive = 0, IsLocked = 1
where UserName in( 'N0007671', 'N0219746', 'N0074342' ...)
如果您的值在数据库中 table,您有 2 种方法可以做到这一点
1 - 使用 IN
UPDATE dbo.Users
SET IsActive = 0, IsLocked = 1
WHERE UserName IN ( SELECT username
FROM your_table
WHERE conditions )
2- 使用 EXISTS
UPDATE dbo.Users
SET IsActive = 0, IsLocked = 1
WHERE EXISTS ( SELECT NULL
FROM your_table yt
WHERE yt.username = dbo.Users and others_conditions )
你可以做到:
where UserName in ('N0007671', 'N0219746' ... )
如果您有硬编码列表,最简单的方法是:
UPDATE dbo.Users
set IsActive = 0, IsLocked = 1
where UserName IN ('N0120454', 'N0219746', 'N0074342',
'N0203867', 'N0155928', 'N0025471',
'N0017467', 'N0239158', 'N0191759', 'N0007671')
如果您希望传入包含一堆的单个字符串值,那么循环遍历应用程序中的值会更简单。否则,您将需要使用动态 SQL,或编写一个将字符串解析为多个值并使用临时 table 加入的函数。既不标准也不漂亮。