天天看點

Mysql left join & right join& jion in

1.建立測試表​

mysql> select * from t1;
+------+--------+
| id   | kemu   |
+------+--------+
|    1 | yuwen  |
|    2 | shuxue |
|    3 | yingyu |
+------+--------+
3 rows in set (0.00 sec)
mysql> select * from t2;
+------+-------+
| id   | score |
+------+-------+
|    4 | 80    |
|    2 | 90    |
|    3 | 100   |
+------+-------+
3 rows in set (0.00 sec)      

2.left join

顧名思義,就是“左連接配接”,表1左連接配接表2,以左為主,表示以表1為主,關聯上表2的資料,查出來的結果顯示左邊的所有資料,然後右邊顯示的是和左邊有交集部分的資料。如下:

mysql> select * from t1 left join t2 on t1.id=t2.id;
+------+--------+------+-------+
| id   | kemu   | id   | score |
+------+--------+------+-------+
|    2 | shuxue |    2 | 90    |
|    3 | yingyu |    3 | 100   |
|    1 | yuwen  | NULL | NULL  |
+------+--------+------+-------+
3 rows in set (0.00 sec)      

3.right join

“右連接配接”,表1右連接配接表2,以右為主,表示以表2為主,關聯查詢表1的資料,查出表2所有資料以及表1和表2有交集的資料,如下:

mysql> select * from t2 left join t1 on t2.id=t1.id;
+------+-------+------+--------+
| id   | score | id   | kemu   |
+------+-------+------+--------+
|    2 | 90    |    2 | shuxue |
|    3 | 100   |    3 | yingyu |
|    4 | 80    | NULL | NULL   |
+------+-------+------+--------+
3 rows in set (0.00 sec)      

4.join

join,其實就是“inner join”,為了簡寫才寫成join,兩個是表示一個的,内連接配接,表示以兩個表的交集為主,查出來是兩個表有交集的部分,其餘沒有關聯就不額外顯示出來,這個用的情況也是挺多的,如下

mysql> select * from t1 join t2 on t1.id=t2.id;
+------+--------+------+-------+
| id   | kemu   | id   | score |
+------+--------+------+-------+
|    2 | shuxue |    2 | 90    |
|    3 | yingyu |    3 | 100   |
+------+--------+------+-------+
2 rows in set (0.00 sec)