MySQL常见的7种通用的Join查询
SQL JOIN: SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
1. INNER JOIN (等值连接) 只返回两个表中联结字段相等的行,如下图所示:
SQL语句:
SELECT <select_list> FROM TableA A INNER JOIN TableB B ON A.key = B.Key
例如:
SELECT * FROM student stu INNER JOIN sc s ON stu.Sno = s.Sno;
2. **LEFT JOIN(左连接)**返回包括左表中的所有记录和右表中联结字段相等的记录 ,右表中没有匹配的填充NULL。
SQL语句:
SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.key = B.Key
例如:
SELECT * FROM student stu LEFT JOIN sc s ON stu.Sno = s.Sno;
3. **RIGHT JOIN(右连接)**返回包括右表中的所有记录和左表中联结字段相等的记录 ,左表中没有匹配的填充NULL。
SQL语句:
SELECT <select_list> FROM TableA A RIGHT JOIN TableB B ON A.key = B.Key
例如:
SELECT * FROM student stu RIGHT JOIN sc s ON stu.Sno = s.Sno;
下面四种情况是根据上面的组合而来:
SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.key = B.Key WHERE B.key IS NULL
SELECT <select_list> FROM TableA A RIGHT JOIN TableB B ON A.key = B.Key WHERE A.key IS NULL
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
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;