besogonskiy
@besogonskiy
работаю php laravel разработчиком.

Как выбрать записи только с максимальными значением одного из полей?

Помогите пожалуйста составить запрос. как выбрать записи из таблицы, где значение конкретного поля максимальное, в рамках другого поля.

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
  • Вопрос задан
  • 1615 просмотров
Решения вопроса 1
leha_gorbunov
@leha_gorbunov
Программист
Если "ЭТО поле" было price то вот так

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
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для 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
  )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы