作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个查询,唯一的区别是 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/
我是一名优秀的程序员,十分优秀!