我有一个包含列 isStaff(位)的 Person 表,它允许 NULL 值。
目的是该字段必须包含值 0/1;但是,由于首先缺乏对用户输入的应用程序处理,因此该列中有多个值为 NULL 的记录。
如果我尝试执行此查询:
UPDATE Person
SET isStaff = 0
WHERE isStaff IS NULL
我得到错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
知道如何解决这个问题吗?
我有一个包含列 isStaff(位)的 Person 表,它允许 NULL 值。
目的是该字段必须包含值 0/1;但是,由于首先缺乏对用户输入的应用程序处理,因此该列中有多个值为 NULL 的记录。
如果我尝试执行此查询:
UPDATE Person
SET isStaff = 0
WHERE isStaff IS NULL
我得到错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
知道如何解决这个问题吗?
如果那是您发布的完全一样的查询,那么我倾向于相信您在Person
您甚至不知道的表上有一个触发器。
我也倾向于相信它正在做一些事情:
UPDATE SomeOtherTable
SET SomeColumn = 1
WHERE SomeOtherTable.ID = inserted.ID
使用触发器,inserted
表包含所有更新的记录,而不仅仅是一条记录,您会想要这样的东西:
UPDATE SomeOtherTable
SET SomeColumn = 1
WHERE ID IN (SELECT ID FROM inserted)
当然,这一切都是推测性的,直到您可以确认桌子上是否有触发器,如果有,触发器正在做什么。