ホームページ >データベース >mysql チュートリアル >MySQL カラムに別のカラムの値がすべて含まれているかどうかを確認するにはどうすればよいですか?

MySQL カラムに別のカラムの値がすべて含まれているかどうかを確認するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-29 22:16:37343ブラウズ

How to Check if a MySQL Column Contains All Values from Another Column?

列に MySQL データベース内の別の列の値がすべて含まれているかどうかを確認する

次の 2 つのテーブル T1 と T2 について考えます。構造体:

T1:

personID stuffID
1 1
1 2
1 3
1 4
2 1
2 4
3 1
3 2

T2:

stuffID
1
2
3

目標は、すべての personID 値を取得することです。 T2 のすべてのスタッフ ID 値に関連付けられている T1 からのデータ。この例では、T2 に存在する 3 つのスタッフ ID すべてのレコードを持っているのは personID 1 のみであるため、結果は 1 になります。

解決策:

これを実現するには、次のようにします。 2 段階のプロセス:

ステップ 1: 一致するものを特定するrecords

SELECT personID
FROM T1
WHERE stuffID IN (SELECT stuffID FROM T2)

このサブクエリは、T2 に一致するスタッフ ID が少なくとも 1 つあるすべての personID 値を T1 から取得します。

ステップ 2: 完全性を確認する

GROUP BY personID
HAVING COUNT(DISTINCT stuffID) = (SELECT COUNT(stuffID) FROM T2)

この部分は、ステップ 1 の結果を personID ごとにグループ化し、カウントされているかどうかを確認します。各グループの個別のスタッフ ID 値の数は、T2 内のスタッフ ID 値の数と同じです。そうである場合、personID が T2 のすべてのスタッフ ID 値に関連付けられていることを示します。

最終クエリ:

両方の手順を組み合わせると、列に次の値が含まれているかどうかを確認する最終クエリが作成されます。 MySQL の別の列のすべての値は次のとおりです:

SELECT personID
FROM T1
WHERE stuffID IN (SELECT stuffID FROM T2)
GROUP BY personID
HAVING COUNT(DISTINCT stuffID) = (SELECT COUNT(stuffID) FROM T2)

以上がMySQL カラムに別のカラムの値がすべて含まれているかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。