SQL Server子查询返回多个值。这是不允许的,当子查询遵循=,!=,<, <= , >,> =,使用触发器
问题描述:
我想写一个触发器添加到SQL Server数据库表中,首先一切都好,但是当我检测到我可以' t将数据添加到我的表中,则会出现以下消息:SQL Server子查询返回多个值。这是不允许的,当子查询遵循=,!=,<, <= , >,> =,使用触发器
SQL Server子查询返回的值超过1个。这当子查询跟随不允许=,=,<,< =,>,> =
如果您有任何想法来解决这个问题,请帮帮我吧!;
我的称呼。
答
的问题是,你有这样的事情:
SELECT foo
FROM Bar
WHERE baz = (
SELECT baz
FROM Whatsit
WHERE a = 42
);
在()
位是子查询。当子查询返回多行时,你不能这样做,因为SQL Server不知道在比较中使用哪一行的值。
的解决方案是:
修改子查询,因此只返回单行,或
修改整个语句中使用联接
你使用取决于具体的查询。
答
如果您使用=或!=,则可以使用IN或NOT IN。你也可以使用EXISTS或NOT EXISTS,这取决于你想要做什么。
我们不可能用我们看不见的代码来帮助你。错误信息非常清晰。所以你需要修改你的子查询,以便它不能返回多行,或者重写你的代码而不使用子查询。 –