13.2.10.2 서브 쿼리를 사용한 비교
서브 쿼리의 가장 일반적인 사용 형식은 다음과 같습니다.
non_subquery_operand
comparison_operator
( subquery
)
여기에서 comparison_operator
는 다음 연산자 중 하나입니다.
=> <> = <= <>! = <=>
예 :
... WHERE 'a'= (SELECT column1 FROM t1)
MySQL에서는 다음과 같은 구조 구문도 허용됩니다.
non_subquery_operand
LIKE ( subquery
)
이전에는 하위 쿼리의 유일한 합법적 인 장소는 비교의 오른쪽이며,이 방법을 고집 한 일부 오래된 DBMS가 아직 발견되기도합니다.
결합에서 수행 할 수없는 일반적인 형태의 서브 쿼리 비교의 예를 보여줍니다. 이것은 column1
값이 테이블 t2
의 최대 값에 동일한 테이블 t1
의 모든 행을 검색합니다.
SELECT * FROM t1 WHERE column1 = (SELECT MAX (column2) FROM t2);
다음 다른 예입니다. 이것 또한 하나의 테이블에 대한 집계가 포함되어 있기 때문에 결합에서 실행할 수 없습니다. 이것은 특정 컬럼에 두 번 나타나는 값을 포함하는 테이블 t1
의 모든 행을 검색합니다.
SELECT * FROM t1 AS t WHERE 2 = (SELECT COUNT (*) FROM t1 WHERE t1.id = t.id);
스칼라 대한 서브 쿼리의 비교의 경우 하위 쿼리는 스칼라를 반환해야합니다. 행 생성자에 서브 쿼리의 비교의 경우 하위 쿼리는 행 생성자와 같은 수의 값이있는 행을 반환 할 행 서브 쿼리 여야합니다. 섹션 13.2.10.5 "행 서브 쿼리" 를 참조하십시오.