Запрос внутри SQL-запроса

#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. Исправил запрос. в нем отсутствовал псевдоним таблицы.