表: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/