我认为您需要相关subquery
:
SELECT p.name, p.manufacturer, p.prize
FROM products AS p
WHERE p.prize = (SELECT MAX(p1.prize) FROM products p1 WHERE p1.manufacturer = p.manufacturer);
通过这种方式,您将以manufacturer
最高的价格获得 s。
编辑:如果product
有相同的prize
,那么您将需要PK
指定唯一序列的(主要/身份)列:
SELECT p.name, p.manufacturer, p.prize
FROM products AS p
WHERE p.pk = (SELECT p1.pk
FROM products p1
WHERE p1.manufacturer = p.manufacturer
ORDER BY p1.prize DESC
LIMIT 1
);
如果您使用的是最新版本MySQL
,那么您还可以使用排名功能:
SELECT p.*
FROM (SELECT p.name, p.manufacturer, p.prize,
ROW_NUMBER() OVER (PARTITION BY p.manufacturer ORDER BY p.prize DESC) AS Seq
FROM products AS p
) p
WHERE Seq = 1;