我的SQL查询
UPDATE Task SET Done = 1 WHERE (ID = (SELECT ID FROM User WHERE UserName = @UserName)
我试过并收到错误:
子查询返回的值超过1。这是不允许的 子查询跟随=,!=,<,< =,>,> =或当子查询用作 一种表达。声明已经终止。
有没有可能的方法(例如for循环)?感谢
答案 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