Erreur de syntaxe EXCEPT dans la requête SQL
Dans MySQL, l'utilisation de la syntaxe EXCEPT pour exclure des lignes d'une requête peut entraîner une erreur de syntaxe. En effet, MySQL ne prend pas en charge nativement le mot-clé EXCEPT.
Solutions alternatives
Pour obtenir la fonctionnalité d'exclusion souhaitée, vous pouvez utiliser soit la clause NOT IN, soit un LEFT JOIN avec une condition IFNULL :
NOT IN Clause :
SELECT s.sno FROM students s WHERE s.sno NOT IN ( SELECT t.sno FROM take t WHERE t.cno = 'CS112' );
LEFT JOIN avec IFNULL :
SELECT s.sno FROM students s LEFT JOIN take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112';
Exemple
Considérez ce qui suit exemples de données :
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');
En utilisant soit la clause NOT IN, soit la LEFT JOIN avec IFNULL renverra le résultat suivant :
+------+ | sno | +------+ | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | +------+
Ces méthodes alternatives excluent effectivement les étudiants qui ont suivi le cours CS112, ce qui donne lieu à une liste d'étudiants qui n'ont pas suivi le cours.
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!