我正在开发某种类型的私有(private)对话网站,我正在将对话存储在一个表中(消息存储在另一个表中)
这是格式:
- Id:自增
- Title:Varchar,代表 session 名称
- 成员:保存有权访问对话的成员的 ID
我的问题是我存储成员的方式实在是太糟糕了。我正在使用 user1Id;user2Id;user3Id
。
尝试获取特定玩家的所有对话时出现问题。
我的问题是:有没有更好的方法来存储 ID? (如果可能,在一个字段上)并且还能够选择特定 ID 的所有对话?
最佳答案
“正确的”、规范化的数据库方式是有另一个表,member_conversation_map
有两列——成员 ID 和对话 ID,并用例如 查询它在
运算符中:
SELECT *
FROM conversations
WHERE id IN (SELECT conversation_id
FROM member_conversation_map
WHERE member_id = 123)
如果那不是一个选项,并且您确实必须将成员 ID 放在数据库的单个单元格中,那么至少使用逗号而不是分号作为分隔符。这将允许您使用 MySQL 的 find_in_set
:
SELECT *
FROM conversations
WHERE FIND_IN_SET('123', members) > 0
关于php - 选择字段内包含用户 ID 的 mysql 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39022896/