Если вы используете MySQL 8+ или более поздней версии, то мы можем легко использовать ROW_NUMBER
здесь:
WITH cte AS (
SELECT title, ROW_NUMBER() OVER (ORDER BY price DESC) rn
FROM book
)
SELECT title
FROM cte
WHERE rn <= 5;
Это не учитывает возможность привязки двух или более книг кпо той же цене.В этом случае мы могли бы использовать аналитическую функцию ранга вместо номера строки.