gpt4 book ai didi

php - MySQL GROUP BY 忽略 ORDER BY 子句

转载 作者:行者123 更新时间:2023-12-01 00:01:59 27 4
gpt4 key购买 nike

我有两个查询,唯一的区别是 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;

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

我本以为不管 GROUP BY 子句如何,第一个结果都会有最高的交易分数 (75)

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

最佳答案

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

尝试在 deal_score 周围放置一个 Max()。在 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;

关于php - MySQL GROUP BY 忽略 ORDER BY 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8922689/

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