MySQL GROUP BY 忽略 ORDER BY 子句

And*_*Gee 0 php mysql group-by

我有两个查询,唯一的区别是 GROUP BY 子句

SELECT * FROM `packages_sorted_YHZ` WHERE `hotel_city` = 'Montego Bay'
ORDER BY  `deal_score` DESC 
LIMIT 0,3;

SELECT * FROM `packages_sorted_YHZ` WHERE `hotel_city` = 'Montego Bay'
GROUP BY `hotel_name`
ORDER BY  `deal_score` DESC
LIMIT 0,3;
Run Code Online (Sandbox Code Playgroud)

第一个查询返回第一个结果deal_score为 75,但第二个查询返回第一个结果deal_score为 72。

我会认为无论 GROUP BY 子句如何,第一个结果都会有最高的交易分数(75)

GROUP BY 子句的目的是hotel_name为每个结果选择一个唯一的。有谁知道我在这里做错了什么。

And*_*man 5

在无法查看所有数据的情况下,我最好的猜测是 Group By 正在合并数据并为您提供与 Where 子句匹配的任意值。如果酒店名称不唯一,就会发生这种情况,除非您专门查询,否则您不会获得最高分。

尝试放置一个Max()deal_score。在 MySQL 中,Group By 的使用方式太容易了,我喜欢 MSSQL 如何强制使用聚合函数并按每个未聚合的字段进行分组。试试这个查询:

SELECT `hotel_name`, MAX( `deal_score` ) AS `max_score` FROM `packages_sorted_YHZ` WHERE `hotel_city` = 'Montego Bay'
GROUP BY `hotel_name`
ORDER BY  `max_score` DESC
LIMIT 0,3;
Run Code Online (Sandbox Code Playgroud)