Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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
Php MySQL按ID分组,按最小值排序(价格)_Php_Mysql_Group By_Sql Order By_Min - Fatal编程技术网

Php MySQL按ID分组,按最小值排序(价格)

Php MySQL按ID分组,按最小值排序(价格),php,mysql,group-by,sql-order-by,min,Php,Mysql,Group By,Sql Order By,Min,好的,我有下面的MySQL语句 目标是根据“id”代码将所有“库存”产品分组,并显示带有“最低价格”的产品 我原以为单独按id分组并在ORDERBY子句中添加MIN(price)就可以了,但显然不行 SELECT * FROM (`products`) WHERE `in_stock` = 'yes' GROUP BY `id` ORDER BY brand, line, product, size, unit, MIN(price) LIMIT 25 有人能帮忙吗 样本数

好的,我有下面的MySQL语句

目标是根据“id”代码将所有“库存”产品分组,并显示带有“最低价格”的产品

我原以为单独按id分组并在ORDERBY子句中添加MIN(price)就可以了,但显然不行

SELECT *  
FROM (`products`)  
WHERE `in_stock` = 'yes'  
GROUP BY `id`  
ORDER BY brand, line, product, size, unit, MIN(price)  
LIMIT 25
有人能帮忙吗

样本数据:

id  brand   line        product size    unit    price   url
123 Adidas  Deep Energy EDT 50  ml  10.00   Link1
123 Adidas  Deep Energy EDT 50  ml  8.75    Link2
123 Adidas  Deep Energy EDT 50  ml  9.99    Link3
124 Adidas  Deep Energy EDT 100 ml  15.00   Link4

因此,实际上,我试图组合的查询将返回上述示例数据的第2行和第4行(“123”和“124”的最低价格行”)

您将最低价格计算为:

SELECT id, MIN(price)   
FROM products
WHERE in_stock = 'yes'  
GROUP BY id ; 
要获得具有最低价格的行,您需要将其重新加入:

select p.*
from products p join
     (SELECT id, MIN(price) as minprice  
      FROM products
      WHERE in_stock = 'yes'  
      GROUP BY id 
     ) pmin
     on p.id = pmin.id and p.price = pmin.minprice;

为了更清楚地了解您的问题,查看一些示例数据和预期结果可能会有所帮助