mysql> select * from goods;
+----------+------------+----------------+------------+-----------+---------------+
| goods_id | goods_name | goods_classify | sell_price | buy_price | register_date |
+----------+------------+----------------+------------+-----------+---------------+
| 0001 | 티셔츠 | 의류 | 1000 | 500 | 2009-09-20 |
| 0002 | 펀칭기 | 사무용품 | 500 | 320 | 2009-09-11 |
| 0003 | 와이셔츠 | 의류 | 4000 | 2800 | NULL |
| 0004 | 식칼 | 주방용품 | 3000 | 2800 | 2009-09-20 |
| 0005 | 압력솥 | 주방용품 | 6800 | 5000 | 2009-01-15 |
| 0006 | 포크 | 주방용품 | 500 | NULL | 2009-09-20 |
| 0007 | 도마 | 주방용품 | 880 | 790 | 2008-04-28 |
| 0008 | 볼펜 | 사무용품 | 100 | NULL | 2009-11-11 |
+----------+------------+----------------+------------+-----------+---------------+
mysql> select * from storegoods;
+----------+------------+----------+-----+
| store_id | store_name | goods_id | num |
+----------+------------+----------+-----+
| 000A | 서울 | 0001 | 30 |
| 000A | 서울 | 0002 | 50 |
| 000A | 서울 | 0003 | 15 |
| 000B | 대전 | 0002 | 30 |
| 000B | 대전 | 0003 | 120 |
| 000B | 대전 | 0004 | 20 |
| 000B | 대전 | 0006 | 10 |
| 000B | 대전 | 0007 | 40 |
| 000C | 부산 | 0003 | 20 |
| 000C | 부산 | 0004 | 50 |
| 000C | 부산 | 0006 | 90 |
| 000C | 부산 | 0007 | 70 |
| 000D | 대구 | 0001 | 100 |
+----------+------------+----------+-----+
위에 처럼 2개의 테이블이 있습니다.
그런데 아래의 결과 문에서 고작 'in'과 '='만 바꿔줬을 뿐 인데,
왜 결과가 다르게 나오는지 모르겠습니다 ㅠㅠ
저는 아래처럼 해석했습니다.
첫 번째의 경우
store_name이 서울일 경우의 goods_id를 가져오와서 그 goods_id에 해당하지 않는 것을 goods 테이블에서 출력
두 번째의 경우
store_name이 서울이 아닌 경우의 goods_id를 가져와서 그 goods_id에 해당하는 것을 goods 테이블에서 출력
mysql> select goods_name, sell_price from goods
-> where goods_id not in
-> (select goods_id from storegoods where
-> store_name = '서울');
+------------+------------+
| goods_name | sell_price |
+------------+------------+
| 식칼 | 3000 |
| 압력솥 | 6800 |
| 포크 | 500 |
| 도마 | 880 |
| 볼펜 | 100 |
+------------+------------+
mysql> select goods_name, sell_price from goods
-> where goods_id in
-> (select goods_id from storegoods where
-> store_name != '서울');
+------------+------------+
| goods_name | sell_price |
+------------+------------+
| 티셔츠 | 1000 |
| 펀칭기 | 500 |
| 와이셔츠 | 4000 |
| 식칼 | 3000 |
| 포크 | 500 |
| 도마 | 880 |
+------------+------------+
|