What I study/mysql

[MYSQL] 여러 테이블을 한번에 다루기

데송 2023. 1. 9. 17:24

합집합 (UNION, UNION ALL)

SELECT [칼럼 이름]
FROM [테이블 A 이름]
(UNION or UNION ALL)

SELECT [칼럼 이름]

FROM [테이블 B 이름];

 

  • UNION : 동일한 값 제외
  • UNION ALL : 동일한 값도 포함
  • 쿼리 A와 쿼리 B의 결과 값의 개수가 같아야 함
  • ORDER BY는 쿼리 A에서 가져온 칼럼으로만 가능

 

 

 

💡 교집합 (INTERSECT), 차집합 (MINUS) *mysql에는 두 표현이 존재하지 않음 → JOIN으로 표현

교집합

SELECT [칼럼 이름]

FROM [테이블A 이름] AS A INNER JOIN [테이블 B 이름] AS B

ON A.[칼럼1 이름] = B.[칼럼2 이름] AND … AND A.[칼럼n 이름] = B.[칼럼 n 이름];

 

차집합 (A - B)

SELECT [칼럼 이름]

FROM [테이블A 이름] AS A LEFT JOIN [테이블 B 이름] AS B

ON A.[칼럼1 이름] = B.[칼럼2 이름] AND … AND A.[칼럼n 이름] = B.[칼럼 n 이름]

WHERE B.[칼럼 이름] IS NULL;