我有一张评论表(对于这样的一些文章):
---------------------------------------------------------------
id |comment_id |likes_count |add_time
---------------------------------------------------------------
0 NULL 0 time0
1 NULL 2 time1
2 0 0 time2
3 0 0 time3
4 NULL 1 time4
5 1 0 time5
comment_id
引用id
同一张表中的。当comment_id
为NULL时,这意味着该评论是父评论(不是对另一个评论的回应,而是对文章本身的回应),但如果它不为空,则意味着该评论是子评论(它是对文章中的另一条评论)。
我正在使用的查询以每个子项显示在其父项下的方式对结果进行排序。
SELECT *
FROM comments
ORDER BY
COALESCE (comment_id, id) DESC,
(comment_id IS NULL) DESC,
likes_count DESC
但我不知道如何让父母评论(他们的孩子跟随它)likes_count
最先出现在结果中,likes_count DESC
似乎没有效果,因为结果总是按id
.
查询返回的结果:
---------------------------------------------------------------
id |comment_id |likes_count |add_time
---------------------------------------------------------------
0 NULL 0 time0
2 0 0 time2
3 0 0 time3
1 NULL 2 time1
5 1 0 time5
4 NULL 1 time4
预期结果:
---------------------------------------------------------------
id |comment_id |likes_count |add_time
---------------------------------------------------------------
1 NULL 2 time1
5 1 0 time5
4 NULL 1 time4
0 NULL 0 time0
2 0 0 time2
3 0 0 time3
phpMyAdmin 显示以下信息:
服务器类型:MariaDB
服务器版本:10.1.40-MariaDB-cll-lve - MariaDB
服务器协议版本:10
cpsrvd 11.78.0.34
数据库客户端版本:libmysql - 5.1.73
PHP版本:7.2.7
phpMyAdmin:4.8.3