tidb 同一条sql语句,where条件不一样,查出的结果一样

【概述】 场景 + 问题概述
同一个sql语句 where 条件不一样,查出的结果值一样。
sql如下

SELECT /*+ SQL_NO_CACHE */
id,
seller_id,
is_finished,
gmt_create,
gmt_modified
FROM
temp_order_trace
WHERE
is_finished = 0
AND seller_id = ‘AZPSNNS54BFCZ’;

SELECT /*+ SQL_NO_CACHE */
id,
seller_id,
is_finished,
gmt_create,
gmt_modified
FROM
temp_order_trace
WHERE
is_finished = 2
AND seller_id = ‘AZPSNNS54BFCZ’;

【问题】 当前遇到的问题
结果如下


【业务影响】
影响业务,数据查询不一致。
【TiDB 版本】
V5.4.0

数据类型是int?

表结构发一下

发下真实的执行计划 explain analyze +sql

你不会是选中2条语句同时执行吧,那结果就是最后一条语句的啊

参考下这两个主题

是int

开启一个事务,再执行这两条sql语句呢。

没什么区别

我这5.4版本,这个是bug么

这2 SQL 一个一个的执行 看结果

where 后面 is_finished 的值 用单引号 括起来试试呢

之前做过数据还原么?我这边遇到过向非空集群做br还原后,查询结果和where条件不匹配的情况

试过了 不可行

去年从aws迁移的时候做过br,应该不是br的问题吧

is_finished 这个字段是什么类型?

int(1)

你 select …from … where is_finished=‘’; 试过吗? 看看结果是什么样的?

is_finished 看情况是个 boolean类型的 , 直接用 tinyint(1) 更合理吧 , 你这个 int(1) 跟 int (10) 没啥区别 , 至于后面为啥不同还是听大佬的

1 个赞