【 TiDB 使用环境】生产环境
【 TiDB 版本】 6.5.1
【复现路径】
图一:
图二
这两个图结果集不一致,与想像的不符,我在mysql8 的环境上验证结果 是一致的,是版本bug吗
按照原则 ,在where里多了条件,结果集应该更小吧
https://github.com/pingcap/tidb/issues?q=is%3Aissue+ifnull+is%3Aclosed+label%3Aaffects-6.5
ifnull函数看起来是个bug大户。加了affects-6.5都能找到不少。
希望你的这个问题,是下面这个bug:
https://github.com/pingcap/tidb/issues/41734
这个bug看合并的记录应该是在6.5.3得到了修复。
你可以尝试升级到6.5.3再试试。如果还不行。这个ifnull加了affects-6.5还有3个open issue没有修复。
只能等等了。
不加ifnull 结果也有问题
仍然有ifnull,第18行。
都改了,还是不行
试试with的方式
不支持吧
能整个最小复现吗,我看下其他版本的有没有这问题
为啥非要用nullif ‘’ 处理null ,直接写is not null 和 is null来判断是否为空不就行了
嗯,产线写的SQL
应该是Leftjoin的问题
不用ifnull 结果好像也不对
这么写太水了。。
主要是想了解SQL的结果集为什么不对
个人以为是sql写法问题 主从表的筛选条乱写 主表的条件写在where后面 从表直接在join on时写
上面的几类SQL,在mysql 都只能出一条数据