表:frei U会议

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

我有两个表,frei_session有在线用户的记录,users表有用户和他们的朋友的数据,用逗号分隔ID。
我想根据users表的friends列从frei_session表中检索数据。
用于Ex
如果user 49是在线的,我希望输出如下
id  username        accountId   status  status_mesg

14  Sumit Bijvani   50          0       I am available

因为用户50和52是用户49的朋友,但现在只有用户50在线
我试过在单个表上跟踪查询,但不知道如何处理两个表
SELECT DISTINCT status_mesg,username,session_id,status,guest
    FROM frei_session
    WHERE accountId!=49
    AND guest=0
    AND status!=2
    AND status!=0

最佳答案

您的表没有规范化被认为是错误的架构设计。无论如何,要直接回答您的问题,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

SQLFiddle Demo

关于php - 从表中选择逗号分隔的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15470760/

10-11 01:35