DataBase/Query 2007. 12. 27. 13:48
반응형

Sub Query를 작성하다보면 이런 에러 메시지를 만나게 되는 경우가 있다.

(sample )
SELECT E.DateBegin, E.DateEnd
FROM dbo.[Event] AS E
WHERE E.EventID =( SELECT ESF.EventID
     FROM DBO.STAFF AS SF,dbo.EventStaff AS ESF
     WHERE SF.staffid = ESF.staffid )

(error)
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

==> 위의 subquery에서 값을 비교하므로 rvalue자체가 스칼라 값이어야만 한다. 그런데 위의 rvalue는 scalar값이 아니다. 이런 경우는 아래와 같이 하면 된다.

(solution)
SELECT E.DateBegin, E.DateEnd
FROM dbo.[Event] AS E
WHERE E.EventID IN ( SELECT ESF.EventID
     FROM DBO.STAFF AS SF,dbo.EventStaff AS ESF
     WHERE SF.staffid = ESF.staffid )


반응형
posted by choiwonwoo
: