2015-01-19 2 views
-1
WHERE a.field = (SELECT a.field FROM a INNER JOIN b ON a.field = b.field) 

어떻게 비교할 수 있습니까? 이 쿼리는 '이 쿼리 문을 반환했습니다. 서브 쿼리는 둘 이상의 행을 반환합니다'하위 쿼리에 의해 반환 된 모든 행과 필드를 비교하는 방법

서브 쿼리가 반환 한 모든 결과와 비교할 수 있습니까?

+0

확실하지 사용

사용 In 연산자는'SELECT .. .LIMIT 1' 또는 어쩌면'SELECT MAX (a.field)'는 강제로 정확히 하나의 행을 반환하는 하위 쿼리 – ryanyuyu

+0

@ryanyuyu 하위 쿼리로 반환 된 모든 행과 비교하고 싶습니다. – therazerme

+0

쿼리가 반환 할 결과 집합을 설명하고 이상적으로는 쿼리에 포함 된 테이블을 설명하십시오. –

답변

0

세 가지 방법으로 모든 행을 비교할 수 있습니다.

WHERE ou.field in (SELECT a.field 
        FROM a 
        INNER JOIN b 
        ON a.field = b.field) 

또는 Exists

WHERE exists (SELECT a.field 
        FROM a 
        INNER JOIN b 
        ON a.field = b.field 
        where ou.field=a.field) 

를 사용하거나 논리가 불완전하지만,에 하위 쿼리를 변경하는 경우 Inner Join

Ou Inner Join (SELECT a.field 
        FROM a 
        INNER JOIN b 
        ON a.field = b.field) c 
    On ou.field = c.field 
관련 문제