我正在为Minecraft游戏开发一个游戏商店,其中一个商品被定义为一对Material字符串和一个Data整数。每个广告项目都插入一个MySQL数据库的表格中,其中包含与之关联的价格整数,同一个项目可以用相同的价格进行多次广告,如下例所示,其中的项目(ink_sack,3)和(苹果,0)出现两次:
+----------+------+-------+
| material | data | price |
+----------+------+-------+
| ink_sack | 0 | 1 |
| ink_sack | 3 | 2 |
| ink_sack | 3 | 6 |
| apple | 0 | 2 |
| apple | 0 | 5 |
|iron_sword| 0 | 10 |
我想要的是检索具有最低价格的每个可能项目(材料和数据对)的条目,如下例所示:
+----------+------+-------+
| material | data | price |
+----------+------+-------+
| ink_sack | 0 | 1 |
| ink_sack | 3 | 2 |
| apple | 0 | 2 |
|iron_sword| 0 | 10 |
但是,在使用LEAST
关键字时,考虑到这些值而不是单个列,我不知道如何做到这一点,或者即使在这种情况下这是正确的选项。我应该如何使用单个查询而不进行后期处理?
答案 0 :(得分:2)
按您想要唯一的列对记录进行分组。像min()
这样的聚合函数适用于每个组
select material, data, min(price) as min_price
from your_table
group by material, data
答案 1 :(得分:0)