sql >> データベース >  >> RDS >> Sqlserver

count(*)列でエイリアスを使用して、have句で参照できないのはなぜですか?

    最近の質問への回答で、CodeByMoonlightが参照しているドキュメントを参照してください。

    HAVING句はSELECTの前に評価されるため、サーバーはそのエイリアスをまだ認識していません。

    1. 最初にfromのすべてのテーブルの積 節が形成されます。
    2. 場所 次に、句が評価され、search_conditionを満たさない行が削除されます。
    3. 次に、 group byの列を使用して行をグループ化します。 条項。
    4. 次に、havingclauseのsearch_conditionを満たさないグループ 排除されます。
    5. 次に、選択の式 条項のターゲットリストが評価されます。
    6. 異なる場合 select句にキーワードが存在するため、重複する行が削除されるようになりました。
    7. ユニオン 各副選択が評価された後に取得されます。
    8. 最後に、結果の行は、順序で指定された列に従って並べ替えられます。 条項。


    1. PostgreSQLでグループごとに最後の行を取得する方法

    2. MariaDBでのTIMESTAMPDIFF()のしくみ

    3. 外部キー制約付きテーブルを切り捨てる方法は?

    4. テーブルの値を使用したPostgresINTERVAL