Поиск строки с максимальным значением поля

LMnet

Имеется таблица из двух столбцов. Первый столбец - название товара, второй - цена. Нужно вывести названия товара с максимальной ценой. Вот одно из очевидных решений:
SELECT `name` 
FROM `products` 
WHERE `price` = ( 
SELECT MAX( `price` ) 
FROM `products` )
Проблема в том, что мне такое решение не подходит. Я привел упрощенный пример, в действительности у меня нет такой таблицы, а внутри FROM находится вложенный запрос, который и генерирует таблицу из двух столбцов. В общем, мне нужно какое-то другое решение. Думал сделать так:
SELECT `name` 
FROM `products` 
HAVING `price`=MAX(`price`)
Но having по ходу так не умеет.Есть еще какие-то варианты?
3 ответа

LMnet

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


LMnet

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


LMnet

Имеется таблица из двух столбцов. Первый столбец - название товара, второй - цена. Нужно вывести названия товара с максимальной ценой. Вот одно из очевидных решений
Очень смущает множественное число слова "название"... но если считать это опечаткой, то более чем очевидное решение
SELECT `name` 
FROM `products` 
ORDER BY `price` DESC
LIMIT 1
А если это не опечатка, возможно несколько товаров с одинаковой ценой, и вывести надо ВСЕ - то чем не устраивает "одно из очевидных решений"? подзапрос всё равно будет материализован - а, значит, ничто не мешает оформить его в виде представления и использовать дважды.