我有一个使用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
语句后执行。
预先感谢任何帮助。
我有一个使用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
语句后执行。
预先感谢任何帮助。
答案是:是的,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
这个查询:
select top 1 from ages order by age
实际上并没有选择任何领域,这就是为什么它不工作,将其更改为:
SELECT TOP 1 age FROM ages ORDER BY age
-- ^^^
谢谢,我知道它editted到正确的。当我在这里输入时,我错过了:) – sTodorov
谢谢,非常具有说明性的例子。 – sTodorov