2011-08-18 4 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.

이 (예를 들어 A에 대한 위해 할 수있는 모든 가능한 방법이 있나요을 고리)? 감사합니다

+0

(사용자의 ID 사용자 이름 = @ 사용자 선택) 같은 이름으로? 이상하게 들리네. 어쩌면 매개 변수를 전달하는 것을 잊어 버리고 사용자 이름이 비어있을 수 있습니까? (그것은 아직도 이상하다?). – 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 둘 이상의 사용자 이름이