Maison >base de données >tutoriel mysql >Comment joindre correctement des tables dans SQL Server à l'aide d'une instruction CASE ?

Comment joindre correctement des tables dans SQL Server à l'aide d'une instruction CASE ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-20 07:21:14517parcourir

How to Correctly Join Tables in SQL Server Using a CASE Statement?

Conseils pour connecter correctement les tables à l'aide des instructions CASE dans SQL Server : correction d'erreur de syntaxe

Dans SQL Server, joindre des tables en fonction des conditions CASE peut être difficile. Cet article explore une requête qui tente de joindre les tables sys.partitions et sys.allocation_units à l'aide d'une instruction CASE, et comment résoudre son erreur de syntaxe.

L'erreur de syntaxe provient de l'utilisation de "=" dans la condition CASE. L'expression CASE renvoie une valeur de la clause THEN, pas un résultat booléen.

Grammaire corrigée

La syntaxe révisée suivante résout l'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) 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>

Explication

La syntaxe corrigée utilise la logique suivante :

  • Pour chaque condition CASE, une expression booléenne est évaluée et renvoie 1 (Vrai) si la condition est remplie, 0 (Faux) sinon.
  • Ensuite, utilisez le signe égal (=) pour comparer le résultat de l'expression CASE à 1. Renvoie 1 si la condition sélectionnée est vraie ; sinon, renvoie 0.
  • Seules les lignes dont l'expression CASE est évaluée à True seront incluses dans le résultat de la jointure.

Cette réponse révisée conserve la langue, le format et la position de l'image d'origine tout en reformulant le texte pour une présentation légèrement différente. La signification principale et les détails techniques restent inchangés.

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!

Déclaration:
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