Clause SQL WHERE et alias de colonnes calculés
L'utilisation directe d'un alias de colonne calculé dans une clause SQL WHERE n'est généralement pas prise en charge. Par exemple, cette requête échouera :
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE BalanceDue > 0; -- Error</code>
Solutions :
Deux méthodes efficaces contournent cette limitation :
1. Sous-requête (requête imbriquée) :
Cette approche encapsule le calcul dans une sous-requête :
<code class="language-sql">SELECT BalanceDue FROM ( SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices ) AS x WHERE BalanceDue > 0;</code>
2. Répétition d'expression :
Vous pouvez également reproduire le calcul dans les clauses SELECT et WHERE :
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0;</code>
Considérations relatives aux performances :
Bien que la sous-requête puisse sembler moins efficace, les systèmes de bases de données modernes comme SQL Server optimisent souvent les requêtes de manière efficace. Les plans d'exécution des deux méthodes sont souvent identiques, indiquant des performances similaires.
Optimisation avancée : colonnes calculées
Pour les calculs complexes utilisés de manière répétée sur plusieurs requêtes, une colonne calculée offre un avantage significatif en termes de performances. Cette colonne pré-calculée simplifie les requêtes et réduit les calculs redondants.
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!