【问题标题】:How to get right rows according to related table containing at least one element of an array?如何根据包含至少一个数组元素的相关表获取正确的行?
【发布时间】:2016-05-17 09:20:21
【问题描述】:

我有一对多关系的postspostWriters 表。 (我也有writersfollows 表)。

每篇文章都是由几位作者合作撰写的。

我想获得最近 20 篇提交的帖子,这些帖子至少由我关注的一位作家撰写。

例如我关注的作家:

$arrayOfWriterIds_IFollow = [3, 5, 123, 45, ..., 3456] // total 100 ids

我想获得最后 20 篇文章,至少我关注的一位作者对它们做出了贡献。

哪个mysql查询给了我真实的结果?谢谢。

【问题讨论】:

  • 你试过什么查询?你能提供一些表模式来帮助澄清吗?你也可以使用sqlfiddle.com 来做一个示例表结构

标签: php mysql


【解决方案1】:

在不知道完整的表结构的情况下,可能是这样的:

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 删除重复的帖子,然后使用 ORDER BY DESC 获取最新的按日期,最后限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    相关资源
    最近更新 更多