Heim >Datenbank >MySQL-Tutorial >Kann ich eine CASE-Anweisung in einer JOIN-Bedingung verwenden?
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>
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>
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!