如何使用返回多个结果的子查询

时间:2011-08-18 13:16:48

标签: sql tsql subquery

我的SQL查询

UPDATE Task SET Done = 1 WHERE (ID = (SELECT ID FROM User WHERE UserName = @UserName) 

我试过并收到错误:

  

子查询返回的值超过1。这是不允许的   子查询跟随=,!=,<,< =,>,> =或当子查询用作   一种表达。声明已经终止。

有没有可能的方法(例如for循环)?感谢

4 个答案:

答案 0 :(得分:6)

行的ID如何等于多个值?

这没有意义,这就是为什么写这样的查询是不可能的。

检查ID是否在一个集合中是有意义的,但是......

...WHERE ID IN (SELECT ID...

答案 1 :(得分:4)

您可以使用IN运算符。

WHERE ID IN (SELECT ID FROM User WHERE UserName = @UserName)

答案 2 :(得分:1)

UPDATE任务SET完成= 1 WHERE ID IN(用户WHERE UserName = @UserName中的SELECT ID)

答案 3 :(得分:0)

以下内容如何?您可以像在SELECT语句中一样使用简单连接:

UPDATE Task t, User u 
SET t.Done = 1 
WHERE t.ID = u.ID
AND u.UserName = @UserName