回答

收藏

递归选择帮助

技术问答 技术问答 107 人阅读 | 0 人回复 | 2023-09-13

这是情况。我有两个表:. N+ P+ }& ^' q2 U' b( J, e
用户(网站注册用户),
# \1 B/ s5 `$ y& V; ]. R; `消息(彼此发送的个人消息)
消息表有以下列(只是重要列):
' e  P" \  L/ g: NID,, c" _/ G4 W4 m1 @) w' G# I  h4 @
发件人(发送消息的用户)ID),. W9 ?6 U( w8 z) h+ P
用户的接收者发送消息ID),5 d( G1 i# p9 X2 z' \2 \/ N
reply_to(这个消息要回复的消息ID,可以为NULL)
我需要做的是构建一个SELECT查询,该查询将选择2个用户之间的完整对话。即,如果用户A从用户那里回复B而用户B回复消息后,我想得到以下三行:* l/ J# W. @& I6 b) n4 p
message03:回复message02
$ e) ~5 ^, T2 f9 j! Wmessage02:回复message01
0 J: I5 j& [% o% A: m! W$ D从用户A到用户B的message01
我相信可以基于reply_to这样的字段结构SELECT但是我以前从来没有做过类似的事情,所以我需要一些帮助。
8 d6 }9 P- c( U1 C7 e. fSELECT查询应针对MySQL数据库。
) z6 U) _5 l7 l0 T                                                               
1 s: X% l2 F( S1 H8 j0 F    解决方案:                                                               
0 n3 |1 O& T# ^7 x% K# K                                                                事实上,你是错误的:使用它:ANSI SQL,这 是    不可能。一些有供应商扩展名称的数据库(如Oracle的CONNECTBY)可以执行你想要的操作,但不能执行普通的旧操作SQL。$ V8 _, T: W& [. ]% ~8 h- _4 o
我的建议?为了使用更简单的解决方案,更改您的数据。5 S& R, u+ ]& x, W  C' [
在这种情况下,请指定每个消息session_id。如果用户发布新消息,请提供新值(目前尚未使用)。如果他们回复,请保留要回复的电子邮件session_id。
  m5 \+ l9 _+ P& h1 x& Q然后,查询数据变得无关紧要。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则