问题遇到的现象和发生背景
hql:使用left join 时,左表没匹配上的数据没有查询出来?去掉where后b表的条件后,反而查询出来。为什么呢?
问题相关代码,请勿粘贴截图
没有查询出来
查询出来了
hql:使用left join 时,左表没匹配上的数据没有查询出来?去掉where后b表的条件后,反而查询出来。为什么呢?
没有查询出来
查询出来了
1、当 a LEFT JOIN b ON ……时,如果b表的列出现在WHERE条件中,LEFT JOIN 就跟 JOIN 的效果一样了,除非是 b.col is NULL 条件,这个是基础知识
2、抛开业务需求,单从SQL技术的角度,你的SQL的正确写法应该是将 WHERE 中的 AND b.dt='9999-99-99' 移动到 a LEFT JOIN b ON 这一行的最后才行