Technology/Database
MySQL / Join 중복문제
Yonglae Cho
2010. 4. 6. 09:50
Database MySQL 뿐만 아니라 Oracle에서 테이블간의 조인(Join)을 하다보면 다음과 같은 중복문제를 경험해 보게 된다.
테이블 A
mysql> select * from a;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
+------+
4 rows in set (0.00 sec)
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
+------+
4 rows in set (0.00 sec)
테이블 B
mysql> select * from b;
+------+
| id |
+------+
| 3 |
| 4 |
| 5 |
| 6 |
| 10 |
| 2 |
| 2 |
+------+
7 rows in set (0.00 sec)
+------+
| id |
+------+
| 3 |
| 4 |
| 5 |
| 6 |
| 10 |
| 2 |
| 2 |
+------+
7 rows in set (0.00 sec)
결과
mysql> select a.id, b.id from a join b on a.id=b.id;
+------+------+
| id | id |
+------+------+
| 3 | 3 |
| 4 | 4 |
| 2 | 2 |
| 2 | 2 |
+------+------+
4 rows in set (0.00 sec)
+------+------+
| id | id |
+------+------+
| 3 | 3 |
| 4 | 4 |
| 2 | 2 |
| 2 | 2 |
+------+------+
4 rows in set (0.00 sec)
문제발생의 원인은 조인하고자 하는 id들이 Unique 하지 않기 때문이다.
A 테이블은 Unique하게 존재하나, B 테이블의 경우 Unique하지 않는다.