Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 根据两列选择行,并根据第三列进行排序_Mysql_Sql_Database - Fatal编程技术网

Mysql 根据两列选择行,并根据第三列进行排序

Mysql 根据两列选择行,并根据第三列进行排序,mysql,sql,database,Mysql,Sql,Database,我正在为游戏Minecraft开发一个游戏内商店,其中一个项目被定义为一对材料字符串和一个数据整数。每个广告项都插入到MySQL数据库的一个表中,该表中有一个与之相关联的价格整数,同一项目可以以相同的价格或不以相同的价格广告多次,如下面的示例所示,其中项目(ink_sack,3)和(apple,0)出现两次: +----------+------+-------+ | material | data | price | +----------+------+-------+ | ink_sack

我正在为游戏Minecraft开发一个游戏内商店,其中一个项目被定义为一对材料字符串和一个数据整数。每个广告项都插入到MySQL数据库的一个表中,该表中有一个与之相关联的价格整数,同一项目可以以相同的价格或不以相同的价格广告多次,如下面的示例所示,其中项目(ink_sack,3)和(apple,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
关键字时,考虑到这些值对而不是单个列,或者即使在这种情况下这是正确的选项,我也不知道如何做到这一点。我应该如何通过单个查询而不进行后期处理来实现这一点?

按您希望唯一的列对记录进行分组。聚合函数,如
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子句。