Maison > base de données > tutoriel mysql > Comment puis-je utiliser efficacement les instructions CASE dans les conditions JOIN de SQL Server ?

Comment puis-je utiliser efficacement les instructions CASE dans les conditions JOIN de SQL Server ?

DDD
Libérer: 2025-01-20 07:27:10
original
226 Les gens l'ont consulté

How Can I Use CASE Statements Effectively in SQL Server JOIN Conditions?

Exploiter les instructions CASE dans les JOIN de SQL Server

L'emploi des instructions CASE dans les conditions JOIN de SQL Server peut être délicat. L'utilisation directe d'une instruction CASE dans la clause JOIN entraîne souvent des erreurs de syntaxe telles que "Syntaxe incorrecte près de '='."

Comprendre l'erreur de syntaxe

Cette erreur survient car une instruction CASE produit une valeur scalaire, pas un résultat booléen vrai/faux. Les conditions JOIN nécessitent cependant des expressions booléennes pour décider de joindre ou non des lignes. Une simple instruction CASE sans comparaison ne satisfait pas ce besoin.

La bonne approche

La solution consiste à concevoir l'instruction CASE pour générer des valeurs booléennes (ou des valeurs qui peuvent être facilement comparées à une valeur booléenne). Cette sortie est ensuite utilisée dans une comparaison pour contrôler la jointure.

Voici un exemple de condition JOIN améliorée :

<code class="language-sql">ON CASE
   WHEN a.type IN (1, 3) THEN CASE WHEN a.container_id = p.hobt_id THEN 1 ELSE 0 END
   WHEN a.type IN (2) THEN CASE WHEN a.container_id = p.partition_id THEN 1 ELSE 0 END
   ELSE 0
   END = 1</code>
Copier après la connexion

Cette instruction révisée utilise des instructions CASE imbriquées. Les instructions CASE internes renvoient 1 si la condition de jointure est remplie (par exemple, a.container_id = p.hobt_id) et 0 sinon. L'instruction CASE externe combine ensuite ces résultats. La comparaison finale (= 1) garantit que les lignes sont jointes uniquement lorsque les conditions des instructions CASE imbriquées sont vraies.

Cette méthode permet la jointure conditionnelle de lignes en fonction de critères spécifiques en utilisant efficacement les instructions CASE dans la condition JOIN.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal