文章目录
前言
full outer join
结合了LEFT JOIN
和RIGHT JOIN
的结果,并使用NULL值作为两侧缺失匹配结果。
语法 :
SELECT
table1.column_name(s),table2.column_name(s)FROM table1
FULLOUTERJOIN table2
ON table1.column_name = table2.column_name;
- 相当于:left join + union + right join
SELECT
table1.column_name(s),table2.column_name(s)FROM table1
LEFTOUTERJOIN table2
ON table1.column_name = table2.column_name
UNIONSELECT
table1.column_name(s),table2.column_name(s)FROM table1
RIGHTOUTERJOIN table2
ON table1.column_name = table2.column_name;
- 样例 :
selectCASEWHEN cast(yz.province_code as string)ISNOTNULLTHEN yz.province_code ELSE hy.access_code ENDAS pro_code,CASEWHEN yz.vehicle_no ISNOTNULLTHEN yz.vehicle_no ELSE hy.vehicle_no ENDAS veh_no,CASEWHEN cast(yz.plate_color_code as string)ISNOTNULLTHEN yz.plate_color_code ELSE hy.vehicle_color ENDAS plate_color,CASEWHEN
MD5(CONCAT(yz.vehicle_no, yz.plate_color_code, yz.province_code, yz.owner_name
))ISNULLTHEN MD5(CONCAT(hy.vehicle_no, hy.vehicle_color, hy.access_code, hy.owner_name
))WHEN MD5(CONCAT(hy.vehicle_no, hy.vehicle_color, hy.access_code, hy.owner_name
))ISNULLTHEN MD5(CONCAT(yz.vehicle_no, yz.plate_color_code, yz.province_code, yz.owner_name
))ELSE MD5(CONCAT(yz.vehicle_no, yz.plate_color_code, yz.province_code, yz.owner_name
))ENDAS crc_md5,
${month1} as diff_month,CASEWHEN yz.vehicle_no ISNULLAND yz.plate_color_code ISNULLTHEN1-- A数据集存在,B数据集不存在WHEN hy.vehicle_no ISNULLAND hy.vehicle_color ISNULLTHEN3-- A数据集不存在,B数据集存在WHEN MD5(CONCAT(hy.vehicle_no, hy.vehicle_color, hy.access_code, hy.owner_name))!= MD5(CONCAT(yz.vehicle_no, yz.plate_color_code, yz.province_code, hy.owner_name))THEN2-- 鉴权值不一样的车辆数据ELSE4-- 相等的情况下ENDAS flag
from yz fullouterjoin
hy ON
yz.vehicle_no = hy.vehicle_no and yz.plate_color_code = hy.vehicle_color
HAVING flag !=4
总结
如果此篇文章有帮助到您, 希望打大佬们能
关注
、
点赞
、
收藏
、
评论
支持一波,非常感谢大家!
如果有不对的地方请指正!!!
参考1
本文转载自: https://blog.csdn.net/weixin_42326851/article/details/137234161
版权归原作者 lfwh 所有, 如有侵权,请联系我们删除。
版权归原作者 lfwh 所有, 如有侵权,请联系我们删除。