Heim > Datenbank > MySQL-Tutorial > Kann ich eine CASE-Anweisung in einer JOIN-Bedingung verwenden?

Kann ich eine CASE-Anweisung in einer JOIN-Bedingung verwenden?

Mary-Kate Olsen
Freigeben: 2025-01-20 07:31:09
Original
279 Leute haben es durchsucht

Can I Use a CASE Statement in a JOIN Condition?

Kann die CASE-Anweisung in JOIN-Bedingungen verwendet werden?

Beim Versuch, Tabellen basierend auf dem Wert einer Spalte in der Tabelle sys.allocation_units zu verknüpfen, erzeugt der folgende Code einen Syntaxfehler:

<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>
Nach dem Login kopieren

Erklärung der Fehlerursache:

CASE-Ausdruck gibt einen einzelnen Wert zurück, keinen Gleichheitsausdruck. In diesem Beispiel muss das Ergebnis des CASE-Ausdrucks mit einer Konstante (z. B. 1) verglichen werden, um festzustellen, ob die Bedingung wahr ist.

Korrigierter Code:

<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>
Nach dem Login kopieren

Dieser Code vergleicht das Ergebnis des CASE-Ausdrucks mit 1 und gibt die Zeile zurück, in der die Bedingung wahr ist.

Das obige ist der detaillierte Inhalt vonKann ich eine CASE-Anweisung in einer JOIN-Bedingung verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage