我们常常需要把不同表格里的不同列,基于一个共同的列(索引),合并成一张表,这时候就需要JOIN了。
SQL JOIN有四种类型:
- INNER JOIN:如果表中有至少一个匹配,则返回行 (相当于集合中的交运算)
- LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 (包含左表全部内容)
- RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 (包含右表全部内容)
- FULL JOIN:只要其中一个表中存在匹配,则返回行 (相当于集合中的并运算)
SQL JOIN 语法:
SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name1=table2.column_name2;
解释:如果table1中的column_name1等于table2中的column_name2,就将从table1、table2中选出来的列合并成一条记录
四种类型:
1、INNER JOIN
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count;
其中 ORDER BY 是将合并后的表格按照access_log.count列升序排列
2、LEFT JOIN
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
LEFT JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count DESC;
其中 ORDER BY DESC 是将合并后的表格按照access_log.count列降序排列
3、RIGHT JOIN
SELECT Websites.name, access_log.count, access_log.date
FROM access_log
RIGHT JOIN Websites
ON access_log.site_id=Websites.id
ORDER BY access_log.count DESC;
4、FULL OUTER JOIN
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
FULL OUTER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count DESC;
注意:
1、INNER JOIN 与 JOIN 是相同的。
2、在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。(如SQL SEVER)
3、在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。(如SQL SEVER)
参考: