[SQL개념] MINUS, 서브쿼리로 JOIN 대체하기
Mysql에서 MINUS 구현하기
Mysql에서는 MINUS
를 사용할 수 없다. 대신NOT IN
을 통해 같은 쿼리문을 만들 수 있다.
예를들어MINUS
를 아래와 같이 쓴다면,
SELECT userid, purchaseid FROM tb1
MINUS
SELECT userid, purchaseid FROM refund_table ;
NOT IN
을 WHERE
절에 써서 MINUS
와 같은 결과를 가질 수 있다. 여기서 기억할 점은 아래처럼 2개 이상의 값에 대해서도 NOT IN
의 값으로 넣을 수 있다는 것이다.
SELECT userid, purchaseid
FROM tb1 a
WHERE (userid, purchaseid) NOT IN
(SELECT userid, purchaseid FROM refund_table));
JOIN은 데이터가 클 때 큰 트랜잭션을 요구한다
그래서 JOIN을 최대한 쓰지 않으면서 서브쿼리로 조건을 걸어주는 방식으로 쿼리문을 짜는 곳도 많다고 한다. 예를들어 아래와 같은 두 테이블이 있고, LMS에 마케팅 동의(Y)를 하고 4월 이전에 가입한 user을 찾으려고 한다.
✅JOIN문 활용
SELECT DISTINCT a.userid FROM user_table a
INNER JOIN marketing_table b
ON a.userid = b.userid
WHERE b.YN = 'Y' and b.marketing_method = 'LMS' and a.createdate < '2022-03-31' );
✅WHERE절에 서브쿼리 활용
SELECT userid FROM user_table
WHERE userid IN
(SELECT userid FROM marketing_table WHERE marketing_method = 'LMS' and YN = 'Y')
Author And Source
이 문제에 관하여([SQL개념] MINUS, 서브쿼리로 JOIN 대체하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@nayoung5859/SQL개념-MINUS-서브쿼리로-JOIN-대체하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)