MySQL中join的7种方法
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;

浙公网安备 33010602011771号