하나의 SQL문 내 또 다른 SQL문을 사용하기 위한 SQL 문법입니다.
MAIN QUERY가 SUBQUERY를 포함하는 종속적인 관계입니다.
SUBQUERY 내에서 ORDER BY는 사용할 수 없습니다.
단일행 혹은 복수행 비교연산자와 함께 사용할 수 있습니다.
SELECT절에 사용하는 SUBQUERY이며, SUBQUERY의 결과는 하나의 COLUMN입니다.
SELECT column1, (SELECT column2 FROM table2 WHERE condtion)
FROM table1
WHERE condition;
FROM절에 사용하는 SUBQUERY이며, MAIN QUERY에서는 INLINE VIEW에서 조회한 COLUMN만 사용 가능합니다.
SELECT a.column, b.column
FROM table1 a, (SELECT column1, column2 FROM table2) b
WHERE condition;
WHERE절에 사용하는 SUBQUERY이며, SINGLE ROW, MULTIPLE ROW, MULTIPLE COLUMN으로 종류가 나뉘어집니다.
SUB QUERY의 결과 값이 2개 이상이라면 에러가 발생합니다.
SELECT columnname
FROM tablename
WHERE columnname = (SELECT columnname
FROM tablename
WHERE condition)
ORDER BY columnname; # MAIN QUERY에서는 ORDER BY 사용 가능합니다.
SELECT columnname
FROM tablename
WHERE columnname IN (SELECT columnname
FROM tablename
WHERE condition)
ORDER BY columnname; # MAIN QUERY에서는 ORDER BY 사용 가능합니다.
SELECT columnname
FROM tablename
WHERE columnname EXISTS (SELECT columnname
FROM tablename
WHERE condition)
ORDER BY columnname; # MAIN QUERY에서는 ORDER BY 사용 가능합니다.
비교 연산자를 함께 사용합니다.
SELECT columnname
FROM tablename
WHERE columnname = ANY (SELECT columnname
FROM tablename
WHERE condition)
ORDER BY columnname; # MAIN QUERY에서는 ORDER BY 사용 가능합니다.
비교 연산자를 함께 사용합니다.
SELECT columnname
FROM tablename
WHERE columnname = ALL (SELECT columnname
FROM tablename
WHERE condition)
ORDER BY columnname; # MAIN QUERY에서는 ORDER BY 사용 가능합니다.
SUBQUERY 내 MAIN QUERY의 COLUMN이 같이 사용되는 경우 사용합니다.
SELECT columnname
FROM tablename a
WHERE (a.column1, a.column2,...) IN (SELECT b.column1, b.column2,...
FROM tablename b
WHERE a.column = b.column)
ORDER BY columnname; # MAIN QUERY에서는 ORDER BY 사용 가능합니다.