ホームページ > データベース > mysql チュートリアル > MySQL の「INTERSECT」機能をレプリケートするにはどうすればよいですか?

MySQL の「INTERSECT」機能をレプリケートするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-22 12:58:36
オリジナル
813 人が閲覧しました

How Can I Replicate MySQL's `INTERSECT` Functionality?

MySQL の Intersect に相当するものの検索

SQL では、INTERSECT 演算子は、指定された両方のクエリに現れる個別の値を取得します。ただし、MySQL は INTERSECT をネイティブにサポートしません。

MySQL の代替手段

MySQL で同様の結果を達成するには、次を使用できます。

  • INNER JOIN: 列ごとの値は両方のテーブル間で一致しますが、重複しています
  • WHERE ... IN: 2 番目のテーブル内にも存在する、最初のテーブル内の個別の値を選択します。

次のクエリを、次のクエリを利用する別のデータベース管理システムで考えてみましょう。 INTERSECT:

(select * from emovis_reporting where (id=3 and cut_name= '全プロセス' and cut_name='恐慌') ) 
intersect
( select * from emovis_reporting where (id=3) and ( cut_name='全プロセス' or cut_name='恐慌') )
ログイン後にコピー

INNER JOIN を使用した MySQL の代替:

SELECT DISTINCT * 
FROM emovis_reporting e1
INNER JOIN emovis_reporting e2 
ON (e1.id = e2.id) AND (e1.cut_name = e2.cut_name)
WHERE e1.id = 3 AND (e1.cut_name = '全プロセス' OR e1.cut_name = '恐慌');
ログイン後にコピー

WHERE ... IN を使用した MySQL の代替:

SELECT DISTINCT * 
FROM emovis_reporting
WHERE (id = 3) AND (cut_name IN ('全プロセス', '恐慌'));
ログイン後にコピー

これらの MySQL 代替関数は、次の条件を満たす個別の値を返します。両方のサブクエリで指定された条件。ただし、この特定のクエリには id 列が含まれているため、重複が返されないことに注意することが重要です。一意の識別子のないクエリの場合、一意の結果を保証するために、外側のクエリで DISTINCT を使用することが必要になる場合があります。

以上がMySQL の「INTERSECT」機能をレプリケートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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