【发布时间】:2013-05-09 22:29:14
【问题描述】:
我有一个 cmets 表,其父子 cmets 具有以下字段
comments
comment_id
parent_id
thread_id (Foreign Key)
title
body
comment_date
user_name
我想整理出这种形式的 cmets,首先出现父评论,然后是子 cmets,然后是下一个父评论,然后是子 cmets
我正在使用以下查询
SELECT c1 . * , c2 . *
FROM comments c1
LEFT JOIN comments c2 ON c2.parent_id = c1.comment_id
WHERE c1.parent_id IS NULL
AND c1.thread_id =122
它给出以下输出
你可以看到第一个表中有很多重复的行
我想要以下输出
您可以看到,在这个输出中,首先是父评论(在 parent_id 中有 NULL),然后是它的子 cmets,然后是下一个父评论,然后是它的子 cmets。
我怎样才能形成我的 SQL 查询来获得这个输出。 注意:(第二张图片不是任何查询的结果,我已经修改了它只是为了澄清我的观点,告诉你我想要什么样的输出。)
【问题讨论】:
-
您想要不同的 cmets?
-
@chandresh_cool 这没有明显的问题。其实是排序问题。我想以这种形式来整理,首先是父评论,然后是它的所有子 cmets,依此类推。
-
您只需要选择特定的记录而不是 c1.* ,C2.* 和一些 order by 子句,您的数据将看起来像您想要的方式
-
@RashidFarooq 但是使用 Group By 如果您要进行查询,您将不会得到重复的记录,否则请尝试其他方法...