SQL WHERE 句での計算されたエイリアスの使用
SQL で計算エイリアスを使用する場合、WHERE 句での使用の制限を理解することが重要です。以下のクエリに示すように:
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE BalanceDue > 0 --错误</code>
計算された値BalanceDue
をエイリアスとして WHERE 句で直接使用することはできません。ただし、望ましい結果を達成する方法はあります。
1 つの方法は、派生テーブルを使用することです:
<code class="language-sql">SELECT BalanceDue FROM ( SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices ) AS x WHERE BalanceDue > 0;</code>
または、WHERE 句で計算を繰り返すこともできます。
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0;</code>
ほとんどの場合、わかりやすくするために WHERE 句で式を繰り返すことをお勧めします。
複雑なクエリで計算されたエイリアスを過度に使用すると、パフォーマンスの問題が発生する可能性があることに注意してください。この場合、計算列を作成するか、アクセスを高速化するために結果を永続化することを検討してください。
興味深いことに、この例では、エイリアスがどのように参照されているかに関係なく、SQL Server は計算を 1 回だけ実行するようにクエリを最適化します。ただし、より複雑なクエリを操作する場合は、潜在的なパフォーマンスへの影響を理解することが重要です。
以上がSQL WHERE 句で計算されたエイリアスを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。