Php MySQL按ID分组,按最小值排序(价格)
好的,我有下面的MySQL语句 目标是根据“id”代码将所有“库存”产品分组,并显示带有“最低价格”的产品 我原以为单独按id分组并在ORDERBY子句中添加MIN(price)就可以了,但显然不行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 有人能帮忙吗 样本数
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;
为了更清楚地了解您的问题,查看一些示例数据和预期结果可能会有所帮助