什么是MySQL全連接
MySQL全連接,也叫作outer join,是一種種連接兩個或多個表的方法。與內(nèi)連接只顯示符合條件的數(shù)據(jù)不同,MySQL全連接可以顯示所有的數(shù)據(jù),不論是否符合條件。
MySQL全連接語法
MySQL全連接語法比較簡單,如下所示:
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name;
這里的SELECT
告訴MySQL我們要查詢的數(shù)據(jù)列,FROM
指明我們要查詢的表,FULL OUTER JOIN
指明連接類型,ON
指定連接的條件。
MySQL全連接示例
考慮以下兩個表,一個是customers
表,記錄了我們的客戶信息,另一個是orders
表,記錄了客戶的訂單信息。
customers表
+----+-------+---------------+
| id | name | email |
+----+-------+---------------+
| 1 | Jack | jack@163.com |
| 2 | Rose | rose@qq.com |
| 3 | Peter | peter@qq.com |
+----+-------+---------------+
orders表
+-----+------------+-----------+
| oid | order_date | customer |
+-----+------------+-----------+
| 111 | 2021-01-01 | Jack |
| 112 | 2021-01-02 | Jack |
| 113 | 2021-01-05 | Rose |
+-----+------------+-----------+
現(xiàn)在我們想將這兩個表連接起來,顯示所有客戶的信息以及他們的訂單信息。如果某個客戶沒有訂單,我們也要將他們的信息顯示出來。
SELECT customers.id,customers.name,orders.order_date
FROM customers
FULL OUTER JOIN orders
ON customers.name = orders.customer;
這個查詢會返回以下結(jié)果:
+------+-------+------------+
| id | name | order_date |
+------+-------+------------+
| 1 | Jack | 2021-01-01 |
| 1 | Jack | 2021-01-02 |
| 2 | Rose | 2021-01-05 |
| 3 | Peter | NULL |
+------+-------+------------+
我們可以看到,我們的結(jié)果中包括了所有客戶的信息以及他們的訂單信息,即使他們沒有訂單。對于沒有訂單的客戶,我們使用了NULL
值填充。
總結(jié)
MySQL全連接可以將兩個或多個表連接起來,并顯示所有數(shù)據(jù),即使它們不匹配。使用全連接可以很方便地查詢到完整的數(shù)據(jù),并且在分析數(shù)據(jù)時也十分有用。