MySQL培訓教程:select全連接查詢
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢MySQL培訓教程:select全連接,在檢索時指定多個表,將每個表用都好分隔,這樣每個表的數據行都和其他表的每行交叉產生所有可能的組合,這樣就是一個全連接。所有可能的組和數即每個表的行數之和。
那么觀察下面的檢索的結果:
mysql> SELECT * FROM first,last;
+------+------------+------+-----------+
| id | first_name | id | last_name |
+------+------------+------+-----------+
| 1 | Tom | 2 | Stone |
| 2 | Marry | 2 | Stone |
| 3 | Jarry | 2 | Stone |
| 1 | Tom | 3 | White |
| 2 | Marry | 3 | White |
| 3 | Jarry | 3 | White |
| 1 | Tom | 4 | Donald |
| 2 | Marry | 4 | Donald |
| 3 | Jarry | 4 | Donald |
+------+------------+------+-----------+
你可以看到輸出的結果集中共有3×3=9 行,這就是全連接的結果。
你也可以這樣使用SQL語句:
mysql> SELCT first.*,last.* FROM first,last;
輸出結果與上面的例子相同,并無二致。記錄集的輸出的排序是以FROM子句后的表的順序進行,即先排列位置靠前的表,即使你改變記錄集中列的顯示順序,例如下面的例子:
mysql> SELECT last.*,first.* FROM first,last;
+------+-----------+------+------------+
| id | last_name | id | first_name |
+------+-----------+------+------------+
| 2 | Stone | 1 | Tom |
| 2 | Stone | 2 | Marry |
| 2 | Stone | 3 | Jarry |
| 3 | White | 1 | Tom |
| 3 | White | 2 | Marry |
| 3 | White | 3 | Jarry |
| 4 | Donald | 1 | Tom |
| 4 | Donald | 2 | Marry |
| 4 | Donald | 3 | Jarry |
+------+-----------+------+------------+
上面的例子是兩個非常小的表的例子,如果是幾個非常大的表的全連接,例如,兩個行數分別為1000的表,這樣的連接可以產生非常大的結果集合1000×1000=100萬行。而實際上你并不需要這么多行的結果,通常你需要使用一個WHERE從句來限制返回的記錄集的行數:
mysql> SELECT * FROM first,last WHERE first.id= last.id;
+------+------------+------+-----------+
| id | first_name | id | last_name |
+------+------------+------+-----------+
| 2 | Marry | 2 | Stone |
| 3 | Jarry | 3 | White |
+------+------------+------+-----------+