我有一张名为comments
的表格。这里有三列相关:
id, parent_id, create_date
。
默认情况下,父评论的parent_id
为0。每个孩子都有parent_id
父母的id
。 (到目前为止显而易见的事情)
我正在寻找一个单独的SQL查询,它将按如下顺序排序:
create_date DESC
create_date DESC
一个例子:
这可以在单个查询中执行吗?目前我正在使用php嵌套循环,效率非常低。
答案 0 :(得分:1)
最直接的解决方案是使用两个日期(记录日期和记录的父日期)进行排序
SELECT *
FROM ( SELECT c1.id,
c1.parent_id,
c1.create_date ac,
c1.create_date ap
FROM comments c1
WHERE parent_id = 0
UNION
SELECT c2.id,
c2.parent_id,
c2.create_date ac,
p.create_date ap
FROM comments c2
JOIN comments p
ON c2.parent_id = p.id) c
ORDER BY c.ap, c.ac;