0

大家好

我正在尝试获取 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 的表结构,请看这张图片:

在此处输入图像描述

除了我的解决方案之外,它很丑,它也很慢:(

任何想法?谢谢。

4

0 回答 0