SQL表连接
常用的表连接有:LEFT JOIN、RIGHT JOIN、CROSS JOIN、INNER JOIN、FULL JOIN
表连接相当于N*M行的基础上扩展,即A表N行,B表M行。当有ON 或者 WHERE条件就在N*M行数据中过滤筛选。笛卡尔积了解一下。
LEFT JOIN: 左外连接(A表行 * B表行 ON条件过滤) + (A表非交集连接B表空行)
RIGHT JOIN:右外连接,(A表行 * B表行 ON条件过滤) + (B表非交集连接A表空行)
CROSS JOIN:交叉连接,(A表行 * B表行 ON条件过滤)
INNER JOIN:内连接,(A表和B表的交集)
FULL OUTER JOIN:全连接,A表和B表的全集,mysql使用LEFT JOIN + UNION(去除左右连接重复) + RIGHT JOIN实现。
NATURAL JOIN:自然链接,相当于A表和B表字段一样的话做表连接条件。不过表字段很可能被人修改,不推荐使用自然链接。
USING(字段) 相当于 ON a.字段 = b.字段。
UNION会去重,UNION ALL不会去重。