ホームページ >データベース >mysql チュートリアル >SQL WHERE 句で計算列のエイリアスを使用できますか?
SQL WHERE 句と計算列の別名
SQL WHERE 句内で計算列のエイリアスを直接使用することは、通常はサポートされていません。 たとえば、次のクエリは失敗します:
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE BalanceDue > 0; -- Error</code>
解決策:
この制限を回避するには、次の 2 つの効果的な方法があります。
1.サブクエリ (ネストされたクエリ):
このアプローチでは、計算がサブクエリ内にカプセル化されます。
<code class="language-sql">SELECT BalanceDue FROM ( SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices ) AS x WHERE BalanceDue > 0;</code>
2.式の繰り返し:
または、SELECT 句と WHERE 句の両方で計算を複製します。
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0;</code>
パフォーマンスに関する考慮事項:
サブクエリは効率が悪いように見えるかもしれませんが、SQL Server などの最新のデータベース システムはクエリを効果的に最適化することがよくあります。 両方のメソッドの実行プランは多くの場合同一であり、同様のパフォーマンスを示しています。
高度な最適化: 計算列
複数のクエリにわたって繰り返し使用される複雑な計算では、計算列によりパフォーマンスが大幅に向上します。 この事前計算された列により、クエリが簡素化され、冗長な計算が削減されます。
以上がSQL WHERE 句で計算列のエイリアスを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。