Erreur de syntaxe MySQL EXCEPT : résolution et alternatives
L'erreur rencontrée lors de la tentative d'exécution de la requête avec l'opérateur EXCEPT dans MySQL est due à son manque de prise en charge de cette syntaxe.
Pour surmonter ce problème, envisagez d'utiliser des approches alternatives telles que NOT IN ou LEFT JOIN :
SELECT s.sno FROM students s WHERE s.sno NOT IN ( SELECT t.sno FROM take t WHERE t.cno = 'CS112' );
Alternativement, vous pouvez utiliser un LEFT JOIN :
SELECT s.sno FROM students s LEFT JOIN take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112'
Démonstration avec des tables temporaires :
Pour illustrer l'efficacité Parmi ces alternatives, créons des tables temporaires avec des exemples de données :
create temporary table temp_students (sno int) insert into temp_students values (1) insert into temp_students values (2) insert into temp_students values (3) insert into temp_students values (4) insert into temp_students values (5) insert into temp_students values (6) insert into temp_students values (7) insert into temp_students values (8) insert into temp_students values (9) insert into temp_students values (10) create temporary table temp_take (sno int, cno varchar(50)) insert into temp_take values (1, 'CS112') insert into temp_take values (2, 'CS112') insert into temp_take values (3, 'CS112') insert into temp_take values (4, 'CS112') Execute the following query to retrieve students who are not enrolled in CS112: SELECT s.sno FROM temp_students s LEFT JOIN temp_take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112'
Cette requête doit renvoyer le étudiants numéros 5 à 10.
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!