我有一个使用WITH语句的SQL查询。 查询如下所示:
WITH topAge as (
select top 1 * from ages
order by age
)
select * from topAge where ageGroup = 1
我的问题是Where
语句是否在top
语句之后执行,因为此查询没有检索到任何记录,而我知道数据库中有应该检索的记录。
提前感谢您的帮助。
答案 0 :(得分: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
答案 1 :(得分:2)
此查询:
select top 1 from ages order by age
实际上并没有选择任何字段,这就是为什么它不起作用,将其改为:
SELECT TOP 1 age FROM ages ORDER BY age
-- ^^^