繁体   English   中英

如何创建返回对给定用户评论的回复的 MySQL 查询

[英]How to create a MySQL query that returns the replies to a given user's comments

我正在尝试创建一个页面,显示对活动用户的第一层评论的所有回复。 这是一个类似于我的数据库表的示例......

评论号 postid 命令 用户名 用户身份 上下文
52 100 0 用户1 1 第一的
53 100 52 用户2 2 第二
54 100 52 用户1 1 第三

"commentid" 是评论的唯一 id,"postid" 是它所在的帖子的 id,"commid" 给出了它所响应的评论的编号("0" 表示它在第一层),等等...

如果我以“user1”身份登录并执行以下操作...

$ra = $DB->Execute('SELECT * FROM comments WHERE userid = '.$DB->qstr($id).' ORDER BY commentid DESC')

...它将返回注释 #52 和 #54。 很简单。

我在创建对数据库的请求时遇到问题,该请求将为 output 提供一个列表,该列表为我提供 #53(这是对 user1 评论的回复)。 如果可能的话,我不想包含由活动用户他/她自己编写的#54。

构建此查询的好方法是什么?

如果您只想检索第一级回复(忽略来自初始用户的回复),您可以将评论JOIN自身以查找回复,过滤掉具有相同userid的回复:

SELECT rep.*
FROM comments rep
JOIN comments cmt
WHERE rep.commid = cmt.commentid
  AND cmt.userid = 1
  AND rep.userid != 1

Output(用于您的示例数据):

commentid   postid  commid  username    userid  commtext
53          100     52      user2       2       second

db-fiddle 上的演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM