Если вам нужна только одна максимальная запись, используйте этот запрос:
SELECT c.category
FROM books b
INNER JOIN categories c
ON c.category_id = b.category_id
ORDER BY b.purchase_price DESC
LIMIT 1;
Это упорядочивает набор результатов по цене покупки в порядке убывания (т. Е. Сначала самый дорогой), затем ограничивается однимзапись.Обратите внимание, что я использовал явное внутреннее объединение вместо неявного соединения старой школы, которое вы использовали выше.
Если бы можно было связать несколько книг по максимальной цене, нам пришлось бы прибегнуть к использованию RANK
функция:
SELECT DISTINCT category
FROM
(
SELECT c.category,
RANK() OVER (ORDER BY b.purchase_price DESC) rank
FROM books b
INNER JOIN categories c
ON c.category_id = b.category_id
) t
WHERE t.rank = 1;