mysql中实现full join

2018-02-23  本文已影响0人  夏天的吃瓜群众

因为MySQL不支持FULL JOIN,下面是替代方法:

left join + union(可去除重复数据)+ right join

select * from A left join B on A.id = B.id (关联条件,如where )union select * from A right join B on A.id = B.id (关联条件,如where )

可以 A Left JOIN B UNION B Left JOIN A

PS:

这里的原理,是因为 UNION 操作, 会合并掉重复的。

前面的

A LEFT JOIN B , 包含了 A与B 都有的, 与 A 有 B 没有的。

后面的

B LEFT JOIN A, 包含了 A与B 都有的, 与 B 有 A 没有的。

UNION 处理以后,最后结果就是包含

A与B 都有的, 与 A 有 B 没有的。与 B 有 A 没有的。

但是, 如果你 A LEFT JOIN B 查询的时候, 查询本身就包含 重复记录的话, 那么这种 UNION 的方式恐怕没法使用了。

上一篇 下一篇

猜你喜欢

热点阅读