我正在做一个项目,在这个项目中,我的帖子可以被重新发布到twitter的纯风格(转发)。这些帖子保存在一个表“post”中(id,userid,title,content,date),而repost保存在另一个表“repost”中(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发布于 2018-07-08 01:44:11
加入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;https://stackoverflow.com/questions/51228182
复制相似问题