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
- 左连接:  ```mysql 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  ```mysql 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; -