Heim >Datenbank >MySQL-Tutorial >Warum unterstützt MySQL EXCEPT nicht und wie kann ich das gleiche Ergebnis erzielen?
EXCEPT-Syntaxfehler in MySQL-Abfragen
MySQL-Benutzer können auf einen Syntaxfehler stoßen, wenn sie versuchen, den EXCEPT-Operator in ihren Abfragen zu verwenden. Dieser Fehler tritt häufig auf, wenn versucht wird, Zeilen aus einer Haupttabelle auszuschließen, die einer Bedingung in einer Unterabfrage entsprechen.
Betrachten Sie das folgende Beispiel:
SELECT s.sno FROM students s EXCEPT SELECT t.sno FROM take t WHERE t.cno = 'CS112';
Diese Abfrage versucht, alle Studentenausweise abzurufen die Tabelle „Studenten“, die in der Tabelle „Take“ für den Kurs „CS112“ nicht vorhanden sind. Allerdings unterstützt MySQL die EXCEPT-Syntax nicht.
Alternative Lösungen:
Um das gewünschte Ergebnis zu erzielen, gibt es zwei alternative Ansätze:
SELECT s.sno FROM students s WHERE s.sno NOT IN ( SELECT t.sno FROM take t WHERE t.cno = 'CS112' );
Dies Die Abfrage prüft explizit, ob die Studenten-IDs in der Tabelle „Studenten“ nicht in der Tabelle „Take“ für den Kurs „CS112“ vorhanden sind.
SELECT s.sno FROM students s LEFT JOIN take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112';
Diese Abfrage verwendet einen LEFT JOIN, um Studenten-IDs zwischen den Tabellen „students“ und „take“ abzugleichen. Anschließend wird mit der Funktion IFNULL überprüft, ob das Feld „cno“ in der Tabelle „take“ null ist, was darauf hinweist, dass ein Student nicht in „CS112“ eingeschrieben ist.
Beispielverwendung:
Unter Verwendung der simulierten Daten in der Frage erzeugt die LEFT JOIN mit NULL-Prüfung Folgendes Ergebnis:
SELECT s.sno FROM temp_students s LEFT JOIN temp_take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112';
Ausgabe:
5 6 7 8 9 10
Anstatt die EXCEPT-Syntax zu verwenden, können Benutzer daher die NOT IN-Unterabfrage oder LEFT JOIN mit NULL-Prüfstrategien verwenden, um Zeilen in MySQL auszuschließen Abfragen.
Das obige ist der detaillierte Inhalt vonWarum unterstützt MySQL EXCEPT nicht und wie kann ich das gleiche Ergebnis erzielen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!