因为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 的方式恐怕没法使用了。
网友评论