複数のテーブルを操作する場合、多くの場合、複数のフィールドにわたって特定の条件に一致するレコードを検索する必要があります。 。このシナリオでは、名フィールドと姓フィールドが別のテーブルの特定の値と一致するレコードを検索します。
1 つの方法は、SQL クエリの例にあるように、INTERSECT コマンドを使用することです。ただし、MySQL は INTERSECT をサポートしていません。代わりに、目的の結果を達成するための代替方法があります。
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 句を使用してサブクエリに存在する値をフィルタリングすることもできます。
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 サイトの他の関連記事を参照してください。