ホームページ > データベース > mysql チュートリアル > MySQL で SQL Server の INTERSECT 演算子の機能を実現するにはどうすればよいですか?

MySQL で SQL Server の INTERSECT 演算子の機能を実現するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-11 18:42:15
オリジナル
485 人が閲覧しました

How Can I Achieve the Functionality of SQL Server's INTERSECT Operator in MySQL?

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

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