1

表: frei_session

id  username        accountId   status  status_mesg

14  Sumit Bijvani   50          0       I am available
16  Dilip Borad     49          1       I am available
15  Karan Bijvani   51          1       I am available

表: 用户

accountId    friends

49           50,52
50           49,52,51,44
51           50

我有 2 个表,frei_session有在线用户的记录,而users表有用户和他们的朋友的数据,用逗号分隔 ID。

我想根据 users 表的 friends 列从frei_session检索数据。

对于前

如果user 49在线,我想要如下所示的输出

id  username        accountId   status  status_mesg

14  Sumit Bijvani   50          0       I am available

因为用户 50 和 52 是用户 49 的朋友,但现在只有用户 50 在线

我曾尝试在单个表上进行以下查询,但不知道如何处理 2 个表

SELECT DISTINCT status_mesg,username,session_id,status,guest
    FROM frei_session
    WHERE accountId!=49
    AND guest=0
    AND status!=2
    AND status!=0
4

1 回答 1

3

您的表没有标准化,被认为是糟糕的架构设计。无论如何,要直接回答您的问题,MySQL有一个名为的内置函数FIND_IN_SET可以搜索 CSV 格式的特定值。

SELECT  b.*
FROM    users a
        INNER JOIN frei_session b
            ON FIND_IN_SET(b.accountID, a.friends) > 0
WHERE   b.status = 0 AND
        a.accountID = 49
于 2013-03-18T06:18:54.953 回答