如何通过最后的回复订购?

时间:2017-02-12 16:02:12

标签: sql

我有两个表,第一个是'用户',第二个是'帖子', '用户'有两列:

1 id 
2 username

'posts'有五列:

1 p_id
2 uid
3 post_id
4 content
5 date

已定义的帖子在post_id中的值为“0”,而回复在p_id中的值为post_id。我的问题是

SELECT id,username,p_id,uid,post_id,content,date
FROM users
inner join posts
ON users.id=posts.uid
WHERE post_id='0'
ORDER BY p_id DESC

但我想按照论坛的最后回复订购。

1 个答案:

答案 0 :(得分:0)

使用SELECT子句中的相关子查询来查找该列的最新回复日期和顺序。如果帖子没有回复,请改为使用帖子的日期:

SELECT id,username,p_id,uid,post_id,content,date, (
    SELECT MAX(date) FROM posts r WHERE r.post_id = p.p_id
) AS last_reply_date
FROM users
inner join posts p
ON users.id=p.uid
WHERE p.post_id='0'
ORDER BY COALESCE(last_reply_date, p.date) DESC