Triggers SQL Server子查询返回了多个值。当子查询后跟=、!=、时,不允许这样做<<;=>>;=,使用触发器

Triggers SQL Server子查询返回了多个值。当子查询后跟=、!=、时,不允许这样做<<;=>>;=,使用触发器,triggers,sql-server-2012,Triggers,Sql Server 2012,我正在尝试编写一个触发器以添加到SQL Server数据库表中,首先一切正常,但在检测到无法将数据添加到表中后,出现以下消息: SQL Server子查询返回了多个值。当子查询后跟=、!=、时,不允许这样做= 如果你有任何解决这个问题的想法,请帮助我 我的问候。问题是你有这样的东西: SELECT foo FROM Bar WHERE baz = ( SELECT baz FROM Whatsit WHERE a = 42

我正在尝试编写一个触发器以添加到SQL Server数据库表中,首先一切正常,但在检测到无法将数据添加到表中后,出现以下消息:

SQL Server子查询返回了多个值。当子查询后跟=、!=、时,不允许这样做=

如果你有任何解决这个问题的想法,请帮助我


我的问候。

问题是你有这样的东西:

SELECT  foo
FROM    Bar
WHERE   baz = (
        SELECT  baz
        FROM    Whatsit
        WHERE   a = 42
);
()
中的位是子查询。当子查询返回多行时,不能这样做,因为SQL Server不知道在比较中使用哪一行的值

解决办法是:

  • 修改子查询,使其仅返回一行,或

  • 修改全局语句以使用联接


  • 使用哪一个取决于具体的查询。

    如果使用=或!=,相反,您可以在中使用,也可以不在中使用。您还可以使用EXISTS或NOT EXISTS,具体取决于您尝试执行的操作