MySQL JOIN
FULL JOIN은 각 테이블의 레코드 수를 곱한 만큼의 레코드를 출력하며 이를 Cartesian product라 한다. from test1, test2에서 사용한 컴마(,)를 join 연산자로 생각하면 된다. 컴마 대신 join이나 cross join을 사용해도 같은 결과를 보인다.
mysql> select * from test1,test2;
+--------+------+------+--------+
| a | b | b | d |
+--------+------+------+--------+
| 금강 | 1 | 1 | 백두산 |
| 한강 | 2 | 1 | 백두산 |
| 대동강 | 3 | 1 | 백두산 |
| 두만강 | 4 | 1 | 백두산 |
| 금강 | 1 | 2 | 금강산 |
| 한강 | 2 | 2 | 금강산 |
| 대동강 | 3 | 2 | 금강산 |
| 두만강 | 4 | 2 | 금강산 |
| 금강 | 1 | 5 | 지리산 |
| 한강 | 2 | 5 | 지리산 |
| 대동강 | 3 | 5 | 지리산 |
| 두만강 | 4 | 5 | 지리산 |
| 금강 | 1 | 6 | 한라산 |
| 한강 | 2 | 6 | 한라산 |
| 대동강 | 3 | 6 | 한라산 |
| 두만강 | 4 | 6 | 한라산 |
+--------+------+------+--------+
16 rows in set (0.00 sec)
mysql> select * from test2 straight_join test1;
+------+--------+--------+------+
| b | d | a | b |
+------+--------+--------+------+
| 1 | 백두산 | 금강 | 1 |
| 2 | 금강산 | 금강 | 1 |
| 5 | 지리산 | 금강 | 1 |
| 6 | 한라산 | 금강 | 1 |
| 1 | 백두산 | 한강 | 2 |
| 2 | 금강산 | 한강 | 2 |
| 5 | 지리산 | 한강 | 2 |
| 6 | 한라산 | 한강 | 2 |
| 1 | 백두산 | 대동강 | 3 |
| 2 | 금강산 | 대동강 | 3 |
| 5 | 지리산 | 대동강 | 3 |
| 6 | 한라산 | 대동강 | 3 |
| 1 | 백두산 | 두만강 | 4 |
| 2 | 금강산 | 두만강 | 4 |
| 5 | 지리산 | 두만강 | 4 |
| 6 | 한라산 | 두만강 | 4 |
+------+--------+--------+------+
16 rows in set (0.01 sec)
mysql> select * from test1, test2 where test1.b = test2.b;
+------+------+------+--------+
| a | b | b | d |
+------+------+------+--------+
| 금강 | 1 | 1 | 백두산 |
| 한강 | 2 | 2 | 금강산 |
+------+------+------+--------+
2 rows in set (0.00 sec)
+------+------+------+--------+
| a | b | b | d |
+------+------+------+--------+
| 금강 | 1 | 1 | 백두산 |
| 한강 | 2 | 2 | 금강산 |
+------+------+------+--------+
2 rows in set (0.00 sec)
+------+------+------+--------+
| a | b | b | d |
+------+------+------+--------+
| 금강 | 1 | 1 | 백두산 |
| 한강 | 2 | 2 | 금강산 |
+------+------+------+--------+
2 rows in set (0.00 sec)
+------+------+------+--------+
| a | b | b | d |
+------+------+------+--------+
| 금강 | 1 | 1 | 백두산 |
| 한강 | 2 | 2 | 금강산 |
| NULL | NULL | 5 | 지리산 |
| NULL | NULL | 6 | 한라산 |
+------+------+------+--------+
4 rows in set (0.00 sec)