MySQL で Intersect の代替を見つける
Microsoft SQL Server の INTERSECT 演算子を使用すると、2 つのデータセット間に共通に存在する個別の値を取得できます。残念ながら、MySQL には直接同等のものはありません。
SQL Server 構文:
INTERSECT SELECT value FROM dataset1 SELECT value FROM dataset2
MySQL の代替:
代わりに、MySQL は同様のことを実現する代替方法を提供します。結果:
方法 1: Distinct による INNER JOIN
このアプローチでは、2 つのデータセット間で INNER JOIN を使用し、DISTINCT キーワードを適用して重複を回避します:
SELECT DISTINCT value FROM dataset1 INNER JOIN dataset2 USING (value);
方法 2: によるサブクエリIN
もう 1 つのオプションは、IN を指定したサブクエリを使用して一致する値をチェックすることです。
SELECT value FROM dataset1 WHERE value IN (SELECT value FROM dataset2);
例:
次の MySQL テーブル:
CREATE TABLE table1 (id INT, value VARCHAR(255)); CREATE TABLE table2 (id INT, value VARCHAR(255)); INSERT INTO table1 VALUES (1, 'A'), (2, 'B'), (3, 'B'); INSERT INTO table2 VALUES (1, 'B'); -- Method 1 SELECT DISTINCT value FROM table1 INNER JOIN table2 USING (value); -- Method 2 SELECT value FROM table1 WHERE value IN (SELECT value FROM table2);
両方のメソッドは以下を返します。 result:
+-------+ | value | +-------+ | B | +-------+
一意でないデータを扱う場合、方法 1 の DISTINCT キーワード、または方法 2 のサブクエリで DISTINCT を使用すると、確実に一意の値のみが返されます。
以上がMySQL で SQL Server の INTERSECT 演算子の機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。