MySQL查询优化:仅选取Bull=1的cityIdFrom=91最低价格记录
解决你的SQL查询调整需求
Hey there! 作为SQL新手,能写出分组取最低值的查询已经很棒啦😉。针对你需要的调整——当cityIdFrom为91时仅选取Bull=1的记录,其他情况不受限制,我们只需要在原查询的WHERE子句里添加一个逻辑判断条件就可以实现。
修改后的查询语句
SELECT cityIdFrom, cityIdTo, MIN(fromToPrice) as fromToPrice_min, Bull FROM pricing WHERE cityIdFrom IN (91, 94, 95, 99) AND cityIdTo IN (91, 94, 95, 99) -- 核心条件:要么不是91出发的记录,要么是91出发且Bull=1的记录 AND (cityIdFrom != 91 OR Bull = 1) GROUP BY cityIdFrom, cityIdTo, Bull;
为什么这样改?
我们添加的(cityIdFrom != 91 OR Bull = 1)条件会自动过滤掉不符合要求的记录:
- 当
cityIdFrom是91时,只有Bull=1的记录会被保留,排除掉Bull=0的条目(比如示例里的91→94(3000)、91→95(1000)这两条) - 当
cityIdFrom是其他值(94/95/99)时,这个条件不会对记录做额外限制,和原查询逻辑一致
验证示例数据的结果
用你给出的示例数据运行这个查询,会得到完全符合你期望的结果:
| cityIdFrom | cityIdTo | fromToPrice_min | Bull |
|---|---|---|---|
| 91 | 94 | 5000 | 1 |
| 91 | 99 | 1500 | 1 |
| 99 | 95 | 2000 | 0 |
如果还有其他疑问,随时问哦!
内容的提问来源于stack exchange,提问作者D. Make
相关产品推荐
相关产品推荐

