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 サイトの他の関連記事を参照してください。