2011-08-18 91 views
2

我的SQL查詢如何使用子查詢其返回不止一個結果

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

我嘗試和得到了一個錯誤:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. The statement has been terminated.

是否有任何可能的方式是(例如用於做循環)?謝謝

+0

你有一個以上的用戶名同名?這聽起來很奇怪。也許你忘記傳遞參數,並且你有空白用戶名? (這仍然很奇怪?)。 – gbianchi

+0

@gbianchi - 您在一個允許重複的用戶名的網站上發佈該評論,所以它實際上並不奇怪作爲一個概念。 – JNK

+0

對不起這個不好的例子 – Xitrum

回答

6

行的ID如何等於多個值?

這沒有意義,這就是爲什麼寫這樣的查詢是不可能的。

察看此ID是在一組會是有意義的,但...

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

4

可以使用IN操作。

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

以下情況如何。您可以使用簡單連接你的SELECT語句做同樣的方式:完成

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

更新任務SET = 1 WHERE ID IN(SELECT ID FROM用戶其中username = @用戶)

相關問題