TiDB的sql查询

问题描述:sql查询的结果会变化,是不是因为TiDB的执行原理和MySQL不同
sql:

SELECT
zone_code,
zone_name,
count( shop_no ) shopCount,
sum( storeCount ) storeCount,
sum( goodsCount ) goodsCount,
max( update_time ) AS update_time
FROM
(
SELECT
a.shop_no,
a.shop_name,
b.zone_code,
b.zone_name,
a.storeCount,
b.goodsCount,
b.update_time
FROM
( SELECT shop_no, shop_name, count() storeCount,sharding_flag FROM table1 GROUP BY shop_no ) a
INNER JOIN ( SELECT sharding_flag,shop_no, zone_code, zone_name, max( update_time ) update_time, count(
) goodsCount FROM table2 GROUP BY shop_no ) b ON a.shop_no = b.shop_no
INNER JOIN shop sp ON sp.shop_no = b.shop_no
GROUP BY
a.shop_no
) t
WHERE
t.goodsCount > 1
AND t.storeCount > 1
AND DATE_SUB( CURDATE(), INTERVAL 60 DAY ) <= date( t.update_time )
GROUP BY
zone_code ,zone_name
ORDER BY
shopCount desc

结果:

能不能麻烦您先试试每个子查询里是否会变,对比下 mysql 和 tidb ,多谢。
比如, SELECT shop_no, shop_name, count( *) storeCount,sharding_flag FROM table1 GROUP BY shop_no ,是否是一个定值,永远不改变,一层层向上查看,是从哪里开始和 mysql 不同的,多谢。

您好,发现最底层的子查询数据也会变

SELECT shop_no, shop_name, count( ) storeCount,sharding_flag FROM table1 GROUP BY shop_noSELECT sharding_flag,shop_no, zone_code, zone_name, max( update_time ) update_time, count( ) goodsCount FROM table2 GROUP BY shop_no 请问是这两个 sql 吗? 这个 sql 查询的 count 和 max 值有可能变化,如果需要稳定,可以 group by 后面跟完整的列。