为什么以下查询在MySQL 5.7上运行时会返回不同的结果集?

时间:2017-11-27 10:25:03

标签: mysql mysql-5.7 mysql-5.5

我有一个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);

0 个答案:

没有答案