개발 공부 기록하기/02. DB & SQL
MySQL 교집합과 차집합
lannstark
2020. 8. 29. 22:10
MySQL에서는 INTERSECT와 MINUS 연산을 지원하지 않는다.
어떻게 하면 다른 쿼리를 같은 효과를 낼 수 있는지 알아보자..!
INTERSECT
SELECT emp_no FROM dept_emp WHERE dept_no = 'd001'
INTERSECT
SELECT emp_no FROM dept_emp WHERE dept_no = 'd002';
INNER JOIN을 사용할 수 있다.
SELECT de1.emp_no
FROM dept_emp de1
INNER JOIN dept_emp de2 ON de2.emp_no = de1.emp_no AND de2.dept_no = 'd001'
WHERE de1.dept_no = 'd002';
MINUS
SELECT emp_no FROM dept_emp WHERE dept_no = 'd001'
MINUS
SELECT emp_no FROM dept_emp WHERE dept_no = 'd002';
ANTI Join을 활용할 수 있다.
SELECT de1.emp_no
FROM dept_emp de1
LEFT JOIN dept_emp de2 ON de2.emp_no = de1.emp_no AND de2.dept_no = 'd002'
WHERE de1.dept_no = 'd001' AND de2.dept_no is NULL;