ホームページ > データベース > mysql チュートリアル > INTERSECT を使用せずに、MySQL の複数のテーブル間で一致するレコードを見つけるにはどうすればよいですか?

INTERSECT を使用せずに、MySQL の複数のテーブル間で一致するレコードを見つけるにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-27 09:32:13
オリジナル
278 人が閲覧しました

How Can I Find Matching Records Across Multiple Tables in MySQL Without Using INTERSECT?

INNER JOIN および IN 句を使用した MySQL でのレコード交差の検索

複数のテーブルを操作する場合、多くの場合、複数のフィールドにわたって特定の条件に一致するレコードを検索する必要があります。 。このシナリオでは、名フィールドと姓フィールドが別のテーブルの特定の値と一致するレコードを検索します。

1 つの方法は、SQL クエリの例にあるように、INTERSECT コマンドを使用することです。ただし、MySQL は INTERSECT をサポートしていません。代わりに、目的の結果を達成するための代替方法があります。

INNER JOIN の使用

INNER JOIN を使用して、別のテーブルに一致する行を持つレコードをフィルタリングできます。この場合、次のクエリを使用できます。

SELECT DISTINCT records.id
FROM records
INNER JOIN data d1 ON d1.id = records.firstname AND d1.value = "john"
INNER JOIN data d2 ON d2.id = records.lastname AND d2.value = "smith"
ログイン後にコピー

このクエリは、両方の条件を満たすレコードの一意の ID を返します。

IN 句の使用

別の代わりに、IN 句を使用してサブクエリに存在する値をフィルタリングすることもできます。

SELECT DISTINCT records.id
FROM records
WHERE records.firstname IN (
    SELECT id FROM data WHERE value = 'john'
)
AND records.lastname IN (
    SELECT id FROM data WHERE value = 'smith'
)
ログイン後にコピー

このクエリは次の値を返します。名と姓の値がサブクエリで指定された値と一致するレコードを選択することにより、INNER JOIN クエリと同じ結果が得られます。

以上がINTERSECT を使用せずに、MySQL の複数のテーブル間で一致するレコードを見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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