我即将制作一个消息系统。我不想制作像conversations
和messages
这样的2个表格,而只想拥有messages
。然后会有很多具有相同用户ID的行:
id to_id from_id message
1 1 2 text...
2 1 3 text...
3 2 1 text...
4 1 2 text...
5 1 2 text...
6 1 2 text...
问题是,我希望得到每个对话中的一个。如果id 1写入id 2,那么那就是1个会话,但是如果id 2将回复写入id 1,那么它仍然只是1个会话。
在上面的示例中,只有2个会话(id 1到id 3)和(id 1到id 2和reverse)。
我怎样才能实现这一目标。我的想法是必须有一些比DISTINCT更简单的东西。
答案 0 :(得分:1)
我可能会找一张相关的表,但要保持简单,只需添加conv_id
列。
创建消息时,创建一个新的conv_id
并将其与其他数据一起添加到表行。当回复消息时,只使用conv_id
作为新行。
如果您想要检索对话,请选择WHERE conv_id=x
和/或使用GROUP BY conv_id
。
答案 1 :(得分:0)
为什么不使用group by来加入对话:
select * from table where to_id = 1 group by from_id