我需要停用一堆用户。我有一个这样的列表(样本):
N0120454 N0219746 N0074342 N0203867 N0155928 N0025471 N0017467 N0239158 N0191759 N0007671
public int Id { get; set; }
有没有办法在不使用UserId UserId的情况下执行此操作?
答案 0 :(得分:2)
可能正在使用in operator
UPDATE dbo.Users
set IsActive = 0, IsLocked = 1
where UserName in( 'N0007671', 'N0219746', 'N0074342' ...)
如果您的vales在数据库表中,则有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 )
答案 1 :(得分:0)
你可以这样做:
where UserName in ('N0007671', 'N0219746' ... )
答案 2 :(得分:0)
如果你有一个硬编码列表,最简单的方法是:
UPDATE dbo.Users
set IsActive = 0, IsLocked = 1
where UserName IN ('N0120454', 'N0219746', 'N0074342',
'N0203867', 'N0155928', 'N0025471',
'N0017467', 'N0239158', 'N0191759', 'N0007671')
如果您希望传入包含一堆的单个字符串值,那么循环应用程序中的值会更简单。否则,您将需要使用动态SQL,或者编写一个将字符串解析为多个值并使用临时表连接的函数。既不标准也不漂亮。