#sql
Вопрос:
поэтому я пытаюсь выполнить запрос, в котором мне нужно выбрать 5 лучших продуктов с самой высокой ценой, а затем выбрать 3 лучших из 5 лучших с самой низкой ценой за единицу.
В настоящее время у меня есть топ-5 с этим запросом
select top 5 * from Products order by UnitPrice desc
но я не могу понять, как сделать еще один выбор, чтобы выбрать 3 с самой низкой ценой за единицу, какие-нибудь советы? Я пытался найти выбор внутри выбора или подзапроса, но это не помогло, заранее спасибо.
Комментарии:
1. пожалуйста, отметьте платформу базы данных
Ответ №1:
Если вы хотите упорядочить строки 3-5 по порядку UnitPrice
, вы можете использовать offset
/ fetch
:
select p.*
from products p
order by UnitPrice desc
offset 2 rows fetch first 3 rows only;
Это стандартный SQL, который также поддерживает SQL Server (SQL Server является наиболее распространенной используемой базой top
данных ).
Комментарии:
1. спасибо, что сработало!
2. @John . . . Если это ответ на ваш вопрос, вы можете принять ответ.
Ответ №2:
Попробуйте вложенные запросы.
select top 3 *
from (
select top 5 * from Products order by UnitPrice desc
) a
order by UnitPrice;
Результат будет выводиться в обратном порядке, поэтому, если требуется порядок вывода, требуется второй вложенный оператор.
Комментарии:
1. это даст мне синтаксическую ошибку второго порядка по
2. Исправил запрос. в нем отсутствовал псевдоним таблицы.