join查詢的7中方法
-
手寫順序:
SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_condition> ORDER BY <order_by_condition> LIMIT <limit_number>
-
MySQL執行順序
FROM <left_table> ON <join_condition> <join_type> JOIN <right_table> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_condition> DISTINCT <select_list> ORDER BY <order_by_condition> LIMIT <limit_number>
-
join連接方式:
-
內連接:
-
SELECT <select_list> FROM TableA A INNER JOIN TableB B ON A.Key = B.Key
-
左連接:
SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.Key = B.Key
-
右連接:
SELECT <select_list> FROM TableA A RIGHT JOIN TableB B ON A.Key = B.Key
-
只有A
SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.Key = B.Key WHERE B.Key IS NULL
-
只有B
SELECT <select_list> FROM TableA A RIGHT JOIN TableB B ON A.Key = B.Key WHERE A.Key IS NULL
-
全連接
# MySQL沒有FULL OUTER語法。
SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.Key = B.Key
union
SELECT <select_list> FROM TableA A RIGHT JOIN TableB B ON A.Key = B.Key;
-
A,B各自獨有:
# MySQL沒有FULL OUTER語法。
SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.Key = B.Key WHERE B.Key IS NULL
union
SELECT <select_list> FROM TableA A RIGHT JOIN TableB B ON A.Key = B.Key WHERE A.Key IS NULL;