我想要一个包含酒店房间的数据库,客人可以在其中进行预订。我想显示每个城市最便宜的酒店房间,如果价格相同,我想显示两个城市。我该怎么做呢。我是 Sql 的初学者,所以我很难解决这个问题。
我目前拥有的:
| type | pID |city |price |
|:-----------|------------:|:------------:|----------
| B | COD12 | Canvas | 240 |
| B | COD40 | Canvas | 200 |
| B | KHOD20 | Kentucky | 40 |
| B | KHOD60 | Kentucky | 40 |
我想要什么:
| type | pID |city |price |
|:-----------|------------:|:------------:|----------
| B | COD40 | Canvas | 200 |
| B | KHOD20 | Kentucky | 40 |
| B | KHOD60 | Kentucky | 40 |
最佳答案
这个 SQL 给出了你想要的描述
select type,pID,city,price
from your table
where (city, price)
in (select city, min(price)
from your table
group by 1)
子查询找出每个城市的最低价格,将城市和价格信息作为过滤器传递给主查询。使用此过滤器主查询将返回与城市/价格对匹配的所有行。
关于MySQL如何对表的最低值(value)/价格进行排序,并且只显示最低的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56798676/