SQL топ 1 в операторе WITH - PullRequest
2 голосов
/ 21 июля 2011

У меня есть SQL-запрос, который использует оператор WITH.Запрос выглядит следующим образом:

WITH topAge as (
  select top 1 * from ages
  order by age
)

select * from topAge where ageGroup = 1

Мой вопрос заключается в том, выполняется ли предложение Where после оператора top, поскольку этот запрос не извлекает записей, тогда как я знаю, что в базе данных есть записи, которыедолжен быть найден.

Заранее благодарим за любую помощь.

Ответы [ 2 ]

3 голосов
/ 21 июля 2011

Ответ: Да, предикат ageGroup = 1 применяется только после выбора top 1.Ваш запрос эквивалентен этому

select * from (
  select top 1 * from ages
  order by age
) where ageGroup = 1

Что вы, возможно, хотите, это

select top 1 * from ages
where ageGroup = 1
order by age
2 голосов
/ 21 июля 2011

Этот запрос:

select top 1 from ages order by age 

Фактически не выбирает никаких полей, поэтому он не работает, измените его на:

SELECT TOP 1 age FROM ages ORDER BY age
--           ^^^ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...