【发布时间】:2016-03-10 04:40:41
【问题描述】:
我的一个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 提交了一个错误。 jira.mariadb.org/browse/MDEV-9707
标签: mysql sql subquery mariadb correlated-subquery