sql문 not in과 not exists

이승연·2021년 10월 16일
0

sql

목록 보기
1/1
select * from user left join payment on user.id = payment.user_id // payment가 있거나 없는 모든 유저의 정보를 보여줌
where exists (select * from user where user.id in (1, 2)) // 유저 아이디 가 1이거나 2인 모든 유저를 보여줌
where exists (select * from user where user.id not in (1, 2)) // 유저 아이디 가 1이거나 2가 아닌 모든 유저를 보여줌, null 포함
  • NOT IN

SELECT * FROM a WHERE a.key NOT IN ( SELECT b.key FROM b )

✔︎ b 테이블을 먼저 접근

✔︎ b.key를 IN 리스트에 나열 후 a.key에 공급

✔︎ b테이블: '공급자 역할'

  • NOT EXISTS

SELECT FROM a WHERE NOT EXISTS ( SELECT FROM b WHERE a.key = b.key )

✔︎ a 테이블을 먼저 접근

✔︎ 구해진 a의 row들을 NOT EXISTS절의 b테이블에서 필터링

✔︎ b테이블: '확인자 역할'

출처: https://hellomysql.tistory.com/entry/IN-EXIST-정리 [Hello, MySQL !]

0개의 댓글