Mysql 带联接的特定选择

Mysql 带联接的特定选择,mysql,join,Mysql,Join,为什么大家, 我正在尝试获取不同用户id的列表,其中: 进行了现场登记 和我在同一场比赛中 是我的朋友(他们的FBU用户\u uid在我的FBU朋友字段中) 在同一场比赛中超过3名 下面是数据库的设计 具有值的字段fb_的示例: 14303441766466683021471539456546098131 我已经检索到了实时匹配,有3个以上不同的用户,但我不知道如何检查他们是否是我的朋友:( 这是我尝试过的,但它没有返回预期的结果 SELECT DISTINCT f.id FROM

为什么大家,

我正在尝试获取不同用户id的列表,其中:

  • 进行了现场登记
  • 和我在同一场比赛中
  • 是我的朋友(他们的FBU用户\u uid在我的FBU朋友字段中)
  • 在同一场比赛中超过3名
下面是数据库的设计

具有值的字段fb_的示例: 14303441766466683021471539456546098131

我已经检索到了实时匹配,有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的表结构,请参见下图:

除了我的解决方案,它很难看,也很慢:(


有什么想法吗?谢谢。

Nooooooooooooooooooooooooooooooooooooooooooooooooooooopops,请给我们看一下表的结构好吗?您的图像也丢失了,您与朋友打交道时的结构很差……它应该是用户和朋友ID的单独表(可能是活跃朋友或不活跃朋友的状态)通过这种方式,它可以轻松地查询/连接,而不是使用LIKE查找隐藏在字符串中的内容。您将获得一个大表,性能将受到巨大的影响。