如果使用COUNT DISCTINCT+ORDER BY DESC,则分组行是重复的



在将我的MySQL服务器从版本5更新到版本8后,一件奇怪的事情开始发生。

我有一张叫Events:的表

ClientId Varchar(32)
Time TIMESTAMP
...
Some more irrelevant columns

ClientIdTime上没有异常,只有普通表,没有外键,索引。

如果我这样查询:

SELECT
DATE(`Time`) AS D,
COUNT(DISTINCT ClientId) AS C1
FROM
Events
WHERE
TIME >= '2020-10-01 00:00:00'
GROUP BY
D
ORDER BY
D;

结果正如预期的那样——34行包含数据。

然而,如果我只将DESC添加到ORDER BY,结果会很奇怪:

SELECT DATE(Time) AS D
, COUNT(DISTINCT ClientId) AS C1 
FROM Events 
WHERE Time >= '2020-10-01 00:00:00' 
GROUP 
BY D 
ORDER 
BY D DESC;
+------------+------+
| D          | C1   |
+------------+------+
| 2020-11-03 | 2104 |
| 2020-11-02 | 2017 |
| 2020-11-03 |   46 | -- duplicated 2020-11-03?
| 2020-11-01 |  431 |
| 2020-11-02 |   39 |
| 2020-11-01 | 1665 | -- duplicated 2020-11-01?
| 2020-10-31 | 1320 |
| 2020-11-01 |   67 |
...
total of 86 rows

许多行是重复的。

我试着重建桌子,但没有任何改变。在不同的表上尝试相同的查询,如果同时使用DATE(xyz(+COUNT DISTINCT+GROUP BY DESC,结果是相似的。

我的查询是否有问题,或者是引擎错误?当前版本8.0.21

看起来像MySQL错误:date group and sort groups similar dates in different groupshttps://bugs.mysql.com/bug.php?id=101228

最新更新