ホームページ > データベース > mysql チュートリアル > EXCEPT を使用せずに MySQL クエリで行を除外する方法は?

EXCEPT を使用せずに MySQL クエリで行を除外する方法は?

Patricia Arquette
リリース: 2025-01-01 12:05:10
オリジナル
846 人が閲覧しました

How to Exclude Rows in MySQL Queries Without EXCEPT?

SQL クエリの EXCEPT 構文エラー

MySQL では、EXCEPT 構文を使用してクエリから行を除外すると、構文エラーが発生する可能性があります。これは、MySQL が EXCEPT キーワードをネイティブにサポートしていないためです。

代替ソリューション

必要な除外機能を実現するには、NOT IN 句またはIFNULL 条件を使用した LEFT JOIN:

NOT IN句:

SELECT s.sno
FROM students s
WHERE s.sno NOT IN (
    SELECT t.sno
    FROM take t
    WHERE t.cno = 'CS112'
);
ログイン後にコピー

IFNULL による LEFT JOIN:

SELECT s.sno
FROM students s
LEFT JOIN take t ON s.sno = t.sno
WHERE IFNULL(t.cno, '') != 'CS112';
ログイン後にコピー

次のように考えます。サンプルデータ:

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');
ログイン後にコピー

NOT IN 句または IFNULL を指定した LEFT JOIN を使用すると、次の結果が返されます:

+------+
| sno  |
+------+
|    5 |
|    6 |
|    7 |
|    8 |
|    9 |
|   10 |
+------+
ログイン後にコピー

これらの代替方法は、CS112 コースを受講した学生を効果的に除外します。結果として、コースを受講していない学生のリストが作成されます。

以上がEXCEPT を使用せずに MySQL クエリで行を除外する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート