表: 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
答案 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