在将我的MySQL服务器从版本5更新到版本8后,一件奇怪的事情开始发生。
我有一张叫Events
:的表
ClientId Varchar(32)
Time TIMESTAMP
...
Some more irrelevant columns
ClientId
和Time
上没有异常,只有普通表,没有外键,索引。
如果我这样查询:
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 groups
https://bugs.mysql.com/bug.php?id=101228