前些天在做数据统计的时想使用全表链接查询,于是使用full join 链接但是报错了,而其他的left join和right join是正常的,
这样可以肯定的是full join出了问题。难道是mysql不支持full join?
查看mysql手册,答案是mysql 不支持full in。
在网上一些资料会介绍full join的用法,但是那是在特定的数据库中才能使用的sql关键词,(例如,oracal支持full in)。
那么有什么方式实现full in想要得到的结果呢?
使用left join + right join + union 去重,full in 可以相当与左右链接的结果。
具体实现代码(示例)
select * from t1 left join t2 on t1.id = t2.id
union
select * from t1 right join t2 on t1.id = t2.id
左右链接合并查询得到结果和full in预期的结果是一致的,当然full in的测试结果只能借助其他支持它的数据库啦。
出现这些问题其实质是sql中的某些关键词不兼容造成的,mysql手册也指出尽量使用left join去替换right join,以保持代码的跨数据库移植,说明left join的通用性比right join强。
A left join B 等于 B right join A
这些同时也在提醒我们在网上查看资料是要分析是否适用你当下的环境。
————————————————
版权声明:本文为优快云博主「谢谢你快来」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_32376927/article/details/114860757
该博客讨论了在MySQL中遇到全连接(Full Join)报错的问题,并指出MySQL不直接支持Full Join。作者建议使用Left Join和Right Join的组合以及Union操作来模拟Full Join的效果。同时,文章提醒读者在查阅资料时要考虑其适用的数据库环境,以及在SQL编程中考虑关键词的兼容性和通用性。
1万+

被折叠的 条评论
为什么被折叠?



