Maison >base de données >tutoriel mysql >Pourquoi ne puis-je pas utiliser un alias calculé dans ma clause SQL WHERE ?
Clause SQL WHERE et alias calculés : un problème courant
SQL permet de créer des alias calculés dans les SELECT
instructions. Cependant, faire référence directement à ces alias dans la clause WHERE
entraîne souvent une erreur. Cette limitation peut être problématique lorsque vous travaillez avec des calculs complexes.
Solutions efficaces
Plusieurs approches contournent cette restriction :
Utilisation de sous-requêtes :
Imbriquer le calcul dans une sous-requête, en attribuant un nom à l'alias calculé. Ensuite, référencez ce nom dans la clause WHERE
de la requête externe.
Exemple illustratif :
<code class="language-sql">SELECT BalanceDue FROM ( SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices ) AS x WHERE BalanceDue > 0;</code>
Répéter le calcul :
WHERE
.<code class="language-sql"> SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0;</code>
Implications sur les performances
Bien que les sous-requêtes soient simples, elles peuvent entraîner une dégradation des performances. À l’inverse, des calculs complexes et répétés au sein de la clause WHERE
peuvent également avoir un impact négatif sur les performances.
Stratégie optimale
Pour les calculs simples, répéter le calcul est généralement plus efficace. Pour les calculs complexes, la création d'une colonne calculée persistante est recommandée. Cette colonne précalculée évite les calculs redondants et garantit la cohérence des données entre les requêtes.
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!