Maison > base de données > tutoriel mysql > Puis-je utiliser un alias de colonne calculé dans une clause SQL WHERE ?

Puis-je utiliser un alias de colonne calculé dans une clause SQL WHERE ?

Barbara Streisand
Libérer: 2025-01-11 10:36:41
original
632 Les gens l'ont consulté

Can I Use a Calculated Column Alias in a SQL WHERE Clause?

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal