0

次のユーザープロパティの表があるとします。

id, user_id  properties
1,  NULL,    prop_ss1
2,  NULL,    prop_ss2
3,  2,       prop_1
4,  2,       prop_2
5,  3,       prop_1
6,  3,       prop_2
7,  3,       prop_3
8,  4,       prop_1

user_idsの配列が与えられた場合、user_id NULL(必要に応じてグローバルプロパティと呼びます)を持つ、または指定された配列内のすべてのuser_ids間で共有されるすべてのプロパティのリストを取得するにはどうすればよいですか?

たとえば、配列(2,3)が与えられた場合、次のようになります。

prop_ss1
prop_ss2
prop_1
prop_2

または、array(2,3,4)が与えられた場合、次のように取得します。

prop_ss1
prop_ss2
prop_1
4

2 に答える 2

1

2つの別々のクエリのUNIONを試してください。

SELECT properties FROM your_table WHERE user_id IS NULL

UNION

SELECT properties
FROM your_table
WHERE user_id IN (2, 3)
GROUP BY properties
HAVING COUNT(DISTINCT user_id) = 2

オンラインで動作することを確認してください:sqlfiddle

最後の行の数字2は、クエリしているユーザーの数です。

于 2012-12-24T01:28:17.483 に答える
0
select distinct properties from table
where user_id is null
or user_id in (1,2,3)

申し訳ありませんが、投稿を読み間違えました。groupbyが必要です。

于 2012-12-24T01:30:50.013 に答える