SQL表连接

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不会去重。