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하지 않는다.
'Technology > Database' 카테고리의 다른 글
MySQL / 테이블에서 특정 문자열 바꾸기 (0) | 2011.02.01 |
---|---|
MySQL / MySQL Grant 권한주기 (0) | 2011.01.07 |
MySQL / MySQL Query Performance Tips(쿼리 성능 팁) (0) | 2010.03.20 |
MySQL / AND, OR, NOT with NULLs (Three-value logic) (0) | 2010.02.17 |
MySQL / MySQL 튜닝 (0) | 2010.02.10 |