从表中选择逗号分隔的记录

时间:2013-03-18 06:16:20

标签: php mysql sql join select-query

表: 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 有在线用户记录,用户表中有用户和朋友的数据,用逗号分隔ID。

我想根据用户表的朋友列从 frei_session 表中检索数据。

对于Ex

如果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

1 个答案:

答案 0 :(得分: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