Maison > base de données > tutoriel mysql > Puis-je utiliser une instruction CASE dans une condition JOIN ?

Puis-je utiliser une instruction CASE dans une condition JOIN ?

Mary-Kate Olsen
Libérer: 2025-01-20 07:31:09
original
279 Les gens l'ont consulté

Can I Use a CASE Statement in a JOIN Condition?

L'instruction CASE peut-elle être utilisée dans les conditions JOIN ?

Lorsque vous essayez de joindre des tables en fonction de la valeur d'une colonne de la table sys.allocation_units, le code suivant produit une erreur de syntaxe :

<code class="language-sql">SELECT  *
FROM sys.indexes i
JOIN sys.partitions p
    ON i.index_id = p.index_id 
JOIN sys.allocation_units a
    ON CASE
       WHEN a.type IN (1, 3)
           THEN a.container_id = p.hobt_id 
       WHEN a.type IN (2)
           THEN a.container_id = p.partition_id
       END </code>
Copier après la connexion

Explication de la raison de l'erreur :

L'expression CASE renvoie une valeur unique, pas une expression d'égalité. Dans cet exemple, le résultat de l'expression CASE doit être comparé à une constante (telle que 1) pour déterminer si la condition est vraie.

Code corrigé :

<code class="language-sql">SELECT  * 
FROM sys.indexes i 
JOIN sys.partitions p 
    ON i.index_id = p.index_id  
JOIN sys.allocation_units a 
    ON CASE 
       WHEN a.type IN (1, 3) AND a.container_id = p.hobt_id THEN 1
       WHEN a.type IN (2) AND a.container_id = p.partition_id THEN 1
       ELSE 0
       END = 1</code>
Copier après la connexion

Ce code compare le résultat de l'expression CASE avec 1 et renvoie la ligne où la condition est vraie.

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