我有posts
和postWriters
具有一对多关系的表。(我也有writers
和follows
表)。
每篇文章都是由几位作家合作撰写的。
我想获得最近 20 个提交的帖子,这些帖子是由我关注的至少一位作家撰写的。
例如我关注的作家:
$arrayOfWriterIds_IFollow = [3, 5, 123, 45, ..., 3456] // total 100 ids
我想获得最后 20 个帖子,我关注的作家中至少有一位为他们做出了贡献。
哪个 mysql 查询给我真正的结果?谢谢。
不知道完整的表结构,可能是这样的:
SELECT * FROM postWriters LEFT JOIN posts ON postWriters.post_id=posts.id WHERE postWriter.writer_id IN (your, followed, writers, here) GROUP BY posts.id ORDER BY posts.date DESC LIMIT 0,20;
使用 IN 选择您的作者,GROUP BY 删除重复的帖子,然后按 DESC 排序以获取最新的日期,最后限制。