2011-07-21 17 views
2

私はWITHステートメントを使用するSQLクエリを持っています。 クエリは次のようになります。WITHステートメント内のSQLトップ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 

に相当し、これは私が正しいものにそれをedittedまし

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

おかげで、です。私はここにそれを入力していたときに私はそれを逃した:) – sTodorov

関連する問題