Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL-按不同标准对帖子/评论进行排序和分组_Php_Mysql_Sql - Fatal编程技术网

Php MySQL-按不同标准对帖子/评论进行排序和分组

Php MySQL-按不同标准对帖子/评论进行排序和分组,php,mysql,sql,Php,Mysql,Sql,我有一个SQL语句,它按照发布的时间顺序对评论进行排序,并对父评论的子回复进行分组 |- Comment 1 (Oldest) |- Sub Comment (Sub Oldest) |- Sub Comment |- Sub Comment (Sub Newest) |- Comment 2 (Newest) 查询如下 SELECT * FROM feed_comments c WHERE c.feed = 50 GROUP BY c.

我有一个SQL语句,它按照发布的时间顺序对评论进行排序,并对父评论的子回复进行分组

 |- Comment 1      (Oldest)
  |- Sub Comment   (Sub Oldest)
  |- Sub Comment   
  |- Sub Comment   (Sub Newest)
 |- Comment 2      (Newest)
查询如下

SELECT 
  *
FROM feed_comments c
WHERE c.feed = 50
GROUP BY c.id
ORDER BY 
       IF(c.parent_id IS NULL, c.id, parent_id), 
       c.time ASC
我想修改查询,以同样的方式对注释进行分组,但是我希望主注释从最新到最旧,并保持子回复从最旧到最新

 |- Comment 1      (Newest)
  |- Sub Comment   (Sub Oldest)
  |- Sub Comment   
  |- Sub Comment   (Sub Newest)
 |- Comment 2      (Oldest)

我一直在玩弄许多不同的IF和CASE语句组合,但似乎找不到正确的解决方案

您的查询没有引用日期/时间列,因此我不得不猜测您如何表示“最新”。让我猜这指的是更大的ID

还可以使用
coalesce()
简化表达式


嗨,c.time中有一个UNIX时间戳,它是post时间
SELECT c.*
FROM feed_comments c
WHERE c.feed = 50
GROUP BY c.id
ORDER BY coalesce(c.parent_id, c.id) desc, 
         c.time ASC