我有一个SQL查询工作正常,直到我们将MySQL从版本5.5升级到版本5.7。 SQL查询应为每个用户返回 tx_id 的最高值。我不明白为什么这个查询应该在MySQL升级后返回不同的结果。我是否使用了一些SQL的怪癖,它以未指定的顺序返回值(可能" GROUP BY"是罪魁祸首?)。我想了解我所做的是什么产生了不同的结果。
这是我的疑问:
SELECT t.tx_id FROM (
SELECT tx_id, NAME, ACTION
FROM employee
ORDER BY tx_id DESC) t
GROUP BY t.name
在5.5版上运行时,会返回(正确)以下内容:
4 adam
6 bob
在5.7版上运行时,会返回以下内容:
3 adam
4 bob
如果您想尝试一下,这里有一些示例数据和表定义:
CREATE TABLE `employee` (
`tx_id` int(10) DEFAULT NULL,
`name` varchar(50) DEFAULT NULL,
`action` int(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `employee` */
insert into `employee`(`tx_id`,`name`,`action`) values
(3,'adam',1),
(4,'adam',2),
(4,'bob',1),
(5,'bob',2),
(6,'bob',3);