두 개 이상의 TABLE을 합쳐서 조회하기 위한 SQL 문법입니다.
두 개의 TABLE에서 공통적인 DATA가 있는 COLUMN을 기준으로 TABLE을 합칩니다.
SELECT column1, column2,...
FROM tableA
INNER JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
외부 조인의 경우 공통된 부분을 제외한 나머지 COLUMN의 값은 NULL 값으로 표시됩니다.
LEFT JOIN은 tableA의 전체와 공통 부분을 출력합니다.
SELECT column1, column2,...
FROM tableA
LEFT JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
RIGHT JOIN은 tableB의 전체와 공통 부분을 출력합니다.
SELECT column1, column2,...
FROM tableA
RIGHT JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
FULL OUTER JOIN은 MYSQL에서 지원하지 않아 다른 방법으로 JOIN합니다. (기타 조인 참고)
SELECT column1, column2,...
FROM tableA
FULL OUTER JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
FULL OUTER JOIN은 MYSQL에서 지원하지 않아 UNION, LEFT JOIN, RIGHT JOIN을 활용합니다.
UNION은 중복을 제거하기 때문에 공통된 영역 (교집합)은 한번만 표시됩니다.
SELECT column1, column2,...
FROM tableA
LEFT JOIN tableB ON tableA.column = tableB.column
UNION
SELECT column1, column2,...
FROM tableA
RIGHT JOIN tableB ON tableA.column = tableB.column
WHERE condition;
SELF JOIN은 INNER JOIN과 같은 효과로 JOIN 없이 JOIN 하는 방법입니다.
WHERE 절에 JOIN을 진행하는 방법입니다.
SELECT column1, column2,...
FROM tableA, tableB
WHERE tableA.column = tableB.column AND condition;
가정)
SELECT testTABLE.ID, testTABLE.NAME, exampleTABLE.PHONE
FROM testTABLE
INNER JOIN exampleTABLE
ON testTABLE.ID = exampleTABLE.ID
WHERE condition;
SELECT testTABLE.ID, testTABLE.NAME, exampleTABLE.PHONE
FROM testTABLE
LEFT JOIN exampleTABLE
ON testTABLE.ID = exampleTABLE.ID
WHERE condition;
SELECT testTABLE.ID, testTABLE.NAME, exampleTABLE.PHONE
FROM testTABLE
RIGHT JOIN exampleTABLE
ON testTABLE.ID = exampleTABLE.ID
WHERE condition;
# 에러로 실행되지 않음.
SELECT testTABLE.ID, testTABLE.NAME, exampleTABLE.PHONE
FROM testTABLE
FULL OUTER JOIN JOIN exampleTABLE
ON testTABLE.ID = exampleTABLE.ID
WHERE condition;
SELECT testTABLE.ID, testTABLE.NAME, exampleTABLE.PHONE
FROM testTABLE
LEFT JOIN exampleTABLE ON testTABLE.ID = exampleTABLE.ID
UNION
SELECT testTABLE.ID, testTABLE.NAME, exampleTABLE.PHONE
FROM testTABLE
RIGHT JOIN exampleTABLE ON testTABLE.ID = exampleTABLE.ID
WHERE condition;
SELECT testTABLE.ID, testTABLE.NAME, exampleTABLE.PHONE
FROM testTABLE, exampleTABLE
WHERE testTABLE.ID = exampleTABLE.ID AND condition;