gpt4 book ai didi

mysql - MariaDB 相关子查询中 DateTimes 的截断

转载 作者:行者123 更新时间:2023-11-29 02:50:59 25 4
gpt4 key购买 nike

我的一个group-wise maximum查询返回意外结果。我将其提炼为以下问题:

DROP TABLE IF EXISTS maria_bug;
CREATE TABLE maria_bug (
id INT NOT NULL,
update_time TIMESTAMP(6) NOT NULL
);

INSERT INTO maria_bug VALUES(1, '2001-01-01 00:00:00.200000');
INSERT INTO maria_bug VALUES(1, '2001-01-01 00:00:00.100000');

SELECT
m1.id,
m1.update_time t1,
(SELECT MAX(m2.update_time) FROM maria_bug m2 WHERE m1.id = m2.id) t2
FROM maria_bug m1;

在 MySQL 5.6 上,我得到这个:

1   2001-01-01 00:00:00.200000  2001-01-01 00:00:00.200000
1 2001-01-01 00:00:00.100000 2001-01-01 00:00:00.200000

在 MariaDB (10.0.13) 上:

1   2001-01-01 00:00:00.200000  2001-01-01 00:00:00.200000
1 2001-01-01 00:00:00.100000 2001-01-01 00:00:00.000000

为什么会这样?? MYSQL 的行为是我所期望的。 MariaDB 的某处是否缺少我的设置?这在某处记录了吗?当然,这不可能是数据库中的错误,因为这是一个非常常见的查询:

SELECT COUNT(*) FROM maria_bug m1
WHERE update_time < (SELECT MAX(m2.update_time) FROM maria_bug m2 WHERE m1.id = m2.id)

上述查询在 MYSQL 中按预期返回 1,但在 MariaDB 中返回 0

最佳答案

这似乎是 MariaDB 的一个错误,因为返回的数据与表中的数据不同。

mysql> SELECT *, (SELECT MAX(m2.update_time) FROM maria_bug m2 WHERE m1.id <> 0 ) max_update FROM maria_bug m1;
+----+----------------------------+----------------------------+
| id | update_time | max_update |
+----+----------------------------+----------------------------+
| 1 | 2001-01-01 00:00:00.200000 | 2001-01-01 00:00:00.200000 |
| 1 | 2001-01-01 00:00:00.100000 | 2001-01-01 00:00:00.000000 |
+----+----------------------------+----------------------------+
2 rows in set (0.00 sec)

Bug 被提交给 MariaDB: https://jira.mariadb.org/browse/MDEV-9707

更新:该错误已由 MariaDB 确认。 enter image description here

关于mysql - MariaDB 相关子查询中 DateTimes 的截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35907735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com