は、私はこのようなクエリを持っています。混乱SQL注文
このクエリはなぜ機能しますか?
Created_Date
は、クエリの選択部分でcreated_atの日付をとるときに作成されます。
SQLは、この順序で処理されます。
from, where, group by, having, select, order by
Group By
はSelect
の前に来ます。
上記のクエリでは、エイリアスはroup by
の後に来ることはありませんでしたが、何らかの理由でgroup by
で動作します。
これはなぜですか?
エイリアス名は、それがを働いていた理由であることGroup by
で参照することができ、あなたがcreated_date
という名前の列を持っていないが、あなたはここにPostgreSQLの
date(created_at as date) as created_date,
を別名created_date
を作成している
のすべてのケースではないが、
select
の後に処理される可能性があります。 'created_date'が' SELECT'節で定義されたエイリアスであるため、あなた自身が答えたようです。 – IMSoPは私のポストを編集して明確にしました – LunchBox
ああ、そうです。エイリアスは完全な形式(ここでは 'GROUP BY date(created_at as date)、id')に展開する必要があるため、処理の論理的順序*と*エイリアスの可視性*処理ステップ。私は、Postgresのエイリアスの可視性のルールが何であるか(そして他のDBMSでどのように変わるか)を正確に説明した、よく参照された答えを見ることに興味があります。 – IMSoP