我正在一个项目中,我的帖子可以重新发布为纯Twitter风格(转推)。帖子保存在表“ posts”(id,userid,标题,内容,日期)中,转发内容保存在另一个表“ reposts”(postid,userid,date)中。我需要显示按时间顺序并以降序排列的用户的帖子和转发。
到目前为止,我所能做的是显示两个表,但是转发显示的顺序与发布的创建日期有关,而不与转发的日期一致。如果我重新发布2年前的帖子,我希望现在显示该帖子(重新发布日期),而不是与2年前的帖子(发布日期)一起排序。
这是我的查询
SELECT * FROM (SELECT p.* FROM post AS p WHERE userid='$id' UNION SELECT p.* FROM post AS p WHERE p.id IN (SELECT postid FROM repost WHERE userid='$id')) a ORDER BY date DESC
答案 0 :(得分:1)
加入reposts
和posts
,然后从每个表中选择所需的列。
SELECT *
FROM (SELECT p1.postid,
p1.userid,
p1.title,
p1.content,
p1.date
FROM posts p1
WHERE p1.userid = ?
UNION ALL
SELECT r1.postid,
r1.userid,
p2.title,
p2.content,
r1.date
FROM reposts r1
INNER JOIN posts p2
ON p2.postid = r1.postid
WHERE r1.userid = ?) x
ORDER BY x.date DESC;