0

単一のテーブルに基づいてグループ メンバーシップをチェックする構文を記述しようとしています。テーブルに複数回 (複数の行を意味する) ユーザーがいるため、次のようなデータが含まれる可能性があります。

user      region     field1
----      ------     ------
282       10         38
282       10         128
464       3          57

必要なのは、「グループ A = 地域 10 で、FIELD1 列のこれらの数値のいずれか - 38、79、126。グループ B = 地域 10 で、FIELD1 列のこれらの数値のいずれか - 80,128」という構文です。

この例からわかるように、ユーザー 282 はグループ A とグループ B の両方に属していると見なされます。GROUP_CONCAT を実行して、それらが同じグループに属していることを示しましたが、それらをカウントしたり、「グループ」でフィルタリングしたりするにはどうすればよいですか?

4

1 に答える 1

1

自己結合を使用します。

SELECT DISTINCT t1.user
FROM MyTable t1
JOIN MyTable t2 USING (user)
WHERE t1.region = 10 AND t1.field1 IN (38, 79, 126)
AND t2.region = 10 AND t2.field1 IN (80, 126)
于 2013-01-31T20:44:36.743 に答える