我试图从分组的列(sku)中获取最低价格(总价),然后获取与所得最低价格相关的相应供应商数据(供应商)。
表格示例
sku supplier totalprice
505 Sup1 20
505 Sup2 30
505 Sup3 25
605 Sup1 100
605 Sup2 97
605 Sup3 111
我正在尝试将sku列分组,以获取最低的价格和相关的供应商,
$query = "SELECT sku, supplier, MIN(totalprice) FROM pricetable GROUP BY sku";
$result = mysqli_query($conn, $query);
while($row = mysqli_fetch_array($result)) {
echo "The cheapest ". $row['sku']. " is £" .$row['MIN(totalprice)']." from ".$row['supplier'];
例如,
505组的供应商Sup1的价格最低,为20
组606从供应商Sup2处的最低价格为97
上面的代码为我提供了每个sku组的最低价格,但我无法获得相关的供应商名称。
答案 0 :(得分:2)
您可以在下面尝试-使用相关子查询
SELECT sku, supplier, totalprice FROM pricetable t1
where totalprice in
(select MIN(totalprice) from pricetable t2 where t1.sku=t2.sku GROUP BY t2.sku)
答案 1 :(得分:0)
在MySQL 8.x中,您可以执行以下操作:
select *
from pricetable
where rank() over(partition by sku order by totalprice) = 1
答案 2 :(得分:0)
执行此操作的另一种常见方法是使用sku和每个sku的最小总价创建一个派生表,然后重新加入基本数据集。
SELECT PT.sku, PT.supplier, PT.totalprice
FROM pricetable PT
INNER JOIN (SELECT min(totalprice) MTP, SKU
FROM pricetable
GROUP BY sku) B
on PT.SKU = B.SKU
and PT.MTP = PT.totalprice