Sobes.tech
Back to questions
Middle
8

Как получить книгу с максимальной ценой — через MAX(price) или через сортировку с LIMIT 1?

Companies where asked
sber tech

Answer from AI

sobes.tech AI

Оба варианта — через MAX(price) и через сортировку с LIMIT 1 — могут дать нужный результат, но есть нюансы:

  • MAX(price) возвращает максимальное значение цены, но не всю запись книги. Чтобы получить всю книгу с максимальной ценой, нужно делать дополнительный запрос или использовать подзапрос.

  • Сортировка по цене по убыванию с LIMIT 1 сразу возвращает всю запись книги с максимальной ценой.

Пример с сортировкой:

SELECT * FROM books ORDER BY price DESC LIMIT 1;

Пример с MAX и подзапросом:

SELECT * FROM books WHERE price = (SELECT MAX(price) FROM books);

Если максимальная цена уникальна, оба варианта эквивалентны. Если максимальная цена встречается у нескольких книг, второй вариант вернёт все книги с этой ценой, а сортировка с LIMIT 1 — только одну.

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