Maison > base de données > tutoriel mysql > Comment exclure des lignes dans les requêtes MySQL sans EXCEPT ?

Comment exclure des lignes dans les requêtes MySQL sans EXCEPT ?

Patricia Arquette
Libérer: 2025-01-01 12:05:10
original
817 Les gens l'ont consulté

How to Exclude Rows in MySQL Queries Without EXCEPT?

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'
);
Copier après la connexion

LEFT JOIN avec IFNULL :

SELECT s.sno
FROM students s
LEFT JOIN take t ON s.sno = t.sno
WHERE IFNULL(t.cno, '') != 'CS112';
Copier après la connexion

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');
Copier après la connexion

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 |
+------+
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal