【发布时间】:2019-12-30 19:41:34
【问题描述】:
我有一个名为 STG_Params 的下表:
Schema Table DataBase Flag_Full
dbo Users LocalDB 1
dbo bankInformation LocalDB 0
dbo Language LocalDB 0
dbo Employee LocalDB 1
dbo WorkPermit LocalDB 1
dbo Roles LocalDB 1
dbo School LocalDB 1
dbo Nationality LocalDB 1
dbo Degree LocalDB 1
我想更新具有如下表名的记录并将其 Flag_Full 设置为 0:
UPDATE STG_Param SET Flag_Full = 0
WHERE EXISTS (SELECT m.* from STG_Param m where m.[Table] in ('Users','Employee','Roles',WorkPermit')
当我执行查询时,它会更新 Flag_Full=1 的所有记录,包括 where 条件中未提及的表名。
【问题讨论】:
-
您的
WHERE子句总是评估为true,因为您只是在检查四个表名中的至少一个是否存在。情况总是如此,因此每一行都是要更新的数据的一部分。
标签: sql-server tsql