Mysql 根据两列选择行,并根据第三列进行排序
我正在为游戏Minecraft开发一个游戏内商店,其中一个项目被定义为一对材料字符串和一个数据整数。每个广告项都插入到MySQL数据库的一个表中,该表中有一个与之相关联的价格整数,同一项目可以以相同的价格或不以相同的价格广告多次,如下面的示例所示,其中项目(ink_sack,3)和(apple,0)出现两次:Mysql 根据两列选择行,并根据第三列进行排序,mysql,sql,database,Mysql,Sql,Database,我正在为游戏Minecraft开发一个游戏内商店,其中一个项目被定义为一对材料字符串和一个数据整数。每个广告项都插入到MySQL数据库的一个表中,该表中有一个与之相关联的价格整数,同一项目可以以相同的价格或不以相同的价格广告多次,如下面的示例所示,其中项目(ink_sack,3)和(apple,0)出现两次: +----------+------+-------+ | material | data | price | +----------+------+-------+ | ink_sack
+----------+------+-------+
| 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
关键字时,考虑到这些值对而不是单个列,或者即使在这种情况下这是正确的选项,我也不知道如何做到这一点。我应该如何通过单个查询而不进行后期处理来实现这一点?按您希望唯一的列对记录进行分组。聚合函数,如min()
适用于每个组
select material, data, min(price) as min_price
from your_table
group by material, data
试试这个查询!
这里我使用“GROUP BY”子句,它根据表中的数据和材料进行分组,然后在分组数据的价格列上应用最小“min”的聚合函数,并使用“ORDER BY”子句按价格对其进行排序。
我还附上了查询结果的截图
SELECT
material ,
data ,
min(price) AS price
FROM
[Table Name]
GROUP BY
data ,
material
ORDER BY
price
有个错误!此查询不会以“price”值的排序顺序给出结果。查询结束时,必须使用列名称为price的ORDER BY子句。