2011-07-21 48 views
2

我有一个使用WITH语句的sql查询。 查询看起来是这样的:WITH语句中的SQL top 1

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

select * from topAge where ageGroup = 1 

我的问题是,因为这个查询检索任何记录,而我知道,有在应被检索的数据库中记录的Where条款获取top语句后执行。

预先感谢任何帮助。

回答

3

答案是:是的,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 
+0

谢谢,非常具有说明性的例子。 – sTodorov

2

这个查询:

select top 1 from ages order by age 

实际上并没有选择任何领域,这就是为什么它不工作,将其更改为:

SELECT TOP 1 age FROM ages ORDER BY age 
--   ^^^ 
+0

谢谢,我知道它editted到正确的。当我在这里输入时,我错过了:) – sTodorov