Я думаю, вам нужно вместо 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
(Primary / Identity), который задает уникальную последовательность:
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;