WHERE 句で列の別名を参照
WHERE 句で列のエイリアスを参照すると、データベース クエリの処理時にエラーが発生することがあります。これは、エイリアスは通常、WHERE 句が評価された後に適用されるためです。次のクエリを考えてみましょう:
<code class="language-sql">SELECT logcount, logUserID, maxlogtm , DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary WHERE daysdiff > 120</code>
このクエリでは、「daysdiff」が SELECT ステートメントで作成された列のエイリアスであるため、エラーが発生します。 WHERE 句でエイリアスを参照するには、SQL で WHERE 句の前に SELECT ステートメントを評価するように強制できます。これは、括弧または共通テーブル式 (CTE) を使用して実現できます。
ブラケット/サブクエリ:
<code class="language-sql">SELECT * FROM ( SELECT logcount, logUserID, maxlogtm, DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary ) as innerTable WHERE daysdiff > 120</code>
CTE:
<code class="language-sql">WITH CTE AS ( SELECT logcount, logUserID, maxlogtm, DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary ) SELECT * FROM CTE WHERE daysdiff > 120</code>
括弧または CTE を使用すると、SELECT ステートメントが WHERE 句の前に評価され、WHERE 句でエラーなく列の別名を参照できるようになります。
以上がWHERE 句で列のエイリアスを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。