Utilisation d'alias calculés dans les clauses SQL WHERE
Lors de l'utilisation d'alias calculés en SQL, il est important de comprendre les limites de leur utilisation dans la clause WHERE. Comme le montre la requête ci-dessous :
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE BalanceDue > 0 --错误</code>
Valeur calculéeBalanceDue
en tant qu'alias ne peut pas être utilisée directement dans la clause WHERE. Il existe cependant des moyens d’obtenir les résultats souhaités.
Une solution consiste à utiliser une table dérivée :
<code class="language-sql">SELECT BalanceDue FROM ( SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices ) AS x WHERE BalanceDue > 0;</code>
Alternativement, le calcul peut être répété dans la clause WHERE :
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0;</code>
Dans la plupart des cas, il est recommandé de répéter les expressions dans la clause WHERE par souci de simplicité.
Gardez à l'esprit que la surutilisation des alias calculés dans des requêtes complexes peut entraîner des problèmes de performances. Dans ce cas, envisagez de créer une colonne calculée ou de conserver les résultats pour un accès plus rapide.
Fait intéressant, dans l'exemple donné, SQL Server optimise la requête pour n'effectuer le calcul qu'une seule fois, quelle que soit la façon dont l'alias est référencé. Toutefois, lorsque vous travaillez avec des requêtes plus complexes, il est important de comprendre l’impact potentiel sur les performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!