这是情况.我有两张桌子:
消息表包含这些列(只是重要的列):
我需要做的是构建一个SELECT查询,它将选择2个用户之间的完整对话.即如果用户A回复用户B发送的消息并且用户B回复该消息,我想得到三行,如下所示:
我确信可以基于reply_to字段构造这样的SELECT查询,但我之前从未做过类似的事情所以我需要一些帮助.
SELECT查询应该是针对MySQL数据库的.
实际上你是不正确的:使用ANSI SQL这是不可能的.某些具有供应商扩展的数据库(例如Oracle CONNECT BY)可能能够执行您想要的操作,但不能使用普通的旧SQL.
我的建议?更改数据以便启用更简单的解决方案.
在这种情况下,给每条消息一个conversation_id.如果用户发布了新消息,请为其指定一个新的(当前未使用的)值.如果他们回复,请保留要回复的邮件的conversation_id.
然后查询数据变得微不足道.
我建议conversation_id在messages表格中添加一个字段.每个新的非回复消息都将生成conversation_id,然后基于该消息的每个回复将使用相同的id.然后你的查询很简单:
select * from messages where conversation_id = ? order by id asc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |