大家好
我正在尝试获取 DISTINCT 用户 ID 的列表:
- 进行了现场签到
- 和我在同一个match_id
- 是我的朋友(他们的 fb_user_uid 在我的 fb_friends 字段中)
- 并且超过 3 个(正如我所说,在同一场比赛中)
这是DB的设计。
具有值的字段 fb_friends 示例:1430344176,646668302,1471539456,546098131
我已经检索了现场比赛,有超过 3 个不同的用户,但我不知道如何检查他们是否是我的朋友 :(。
这是我尝试过的,但它没有返回预期的结果。
SELECT DISTINCT
f.id
FROM
fanusers f
WHERE
f.fb_user_uid IN(
SELECT
f1.fb_friends
FROM
fanusers f1
JOIN checkins c1 ON f1.id = c1.fanuser_id
WHERE
c1.ctype = 'live'
AND
c1.match_id IN(
SELECT
c2.match_id
FROM
checkins c2
GROUP BY
c2.match_id
HAVING
COUNT(*)> 3
)
)
要准确理解 fanusers 的表结构,请看这张图片:
除了我的解决方案之外,它很丑,它也很慢:(
任何想法?谢谢。