Heim >Datenbank >MySQL-Tutorial >Wie schließe ich Zeilen in MySQL-Abfragen ohne EXCEPT aus?
EXCEPT-Syntaxfehler in SQL-Abfrage
In MySQL kann die Verwendung der EXCEPT-Syntax zum Ausschließen von Zeilen aus einer Abfrage zu einem Syntaxfehler führen. Dies liegt daran, dass MySQL das Schlüsselwort EXCEPT nicht nativ unterstützt.
Alternative Lösungen
Um die gewünschte Ausschlussfunktionalität zu erreichen, können Sie entweder die NOT IN-Klausel oder eine verwenden LEFT JOIN mit einer IFNULL-Bedingung:
NOT IN Klausel:
SELECT s.sno FROM students s WHERE s.sno NOT IN ( SELECT t.sno FROM take t WHERE t.cno = 'CS112' );
LEFT JOIN mit IFNULL:
SELECT s.sno FROM students s LEFT JOIN take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112';
Beispiel
Bedenken Sie Folgendes Beispieldaten:
create temporary table students (sno int); insert into students values (1); insert into students values (2); insert into students values (3); insert into students values (4); insert into students values (5); insert into students values (6); insert into students values (7); insert into students values (8); insert into students values (9); insert into students values (10); create temporary table take (sno int, cno varchar(50)); insert into take values (1, 'CS112'); insert into take values (2, 'CS112'); insert into take values (3, 'CS112'); insert into take values (4, 'CS112');
Verwenden Sie entweder die NOT IN-Klausel oder die LEFT JOIN mit IFNULL gibt das folgende Ergebnis zurück:
+------+ | sno | +------+ | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | +------+
Diese alternativen Methoden schließen Studenten effektiv aus, die den Kurs CS112 belegt haben, was zu einer Liste von Studenten führt, die den Kurs nicht belegt haben.
Das obige ist der detaillierte Inhalt vonWie schließe ich Zeilen in MySQL-Abfragen ohne EXCEPT aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!