Как выбрать записи только с максимальными значением одного из полей?
Помогите пожалуйста составить запрос. как выбрать записи из таблицы, где значение конкретного поля максимальное, в рамках другого поля.
Eсть таблица, в ней интересуют только поля id, price и parent_id. Записей со значением parent_id одним и тем же может быть несколько. Но надо выбрать только те записи, в которых это поле максимальное.
Например, таблица
id price parent_id
1 10.5 5
2 20.3 5
3 10.5 7
4 6.3 7
5 10.5 6
нужно чтобы итоговая таблица была:
2 20.5 5
3 10.5 7
5 10.5 6
Записей со значением parent_id одним и тем же может быть несколько. Но надо выбрать только те записи, в которых это поле максимальное.
По правилам русского языка - "это" имеется в виду parent_id. Так что я согласен с автором, выбор максимального значения из нескольких "одних и тех же" - задача и правда непростая.
SELECT a.id,a.price,a.parent FROM table a, (select max(price) as price,parent from table group by parent) b
WHERE a.price=b.price and a.parent=b.parent
Для правильного вопроса надо знать половину ответа
Для MySQL 8
SELECT DISTINCT
FIRST_VALUE(`id`) OVER `win` AS `id`,
FIRST_VALUE(`price`) OVER `win` AS `maxprice`,
`parent_id`
FROM `table`
WINDOW `win` AS (
PARTITION BY `parent_id`
ORDER BY `price` DESC
)