首页 > 解决方案 > 由多个但预先确定的帐户撰写的帖子的 SQL 查询

问题描述

我有 2 张桌子;“帖子”和“post_authors”。在 post_authors 中,多个帐户可以协作处理单个帖子。我在考虑如何搜索由用户输入指定的多个帐户协作的帖子时遇到了一些麻烦。

例如,我想查找 Jane Doe 和 John Doe 合作过的所有帖子,即使这些帖子中还有其他合作者。

我当前的查询...

SELECT posts.ID
FROM posts
INNER JOIN post_authors author
    ON ( posts.ID = author.post_id AND author.user_id IN ( '144', '6' ) )
WHERE posts.status = 'publish'

此查询检索任一帐户附加到的所有帖子。

标签: sql

解决方案


一种方法使用聚合:

SELECT p.ID
FROM posts p
INNER JOIN post_authors pa
    ON p.ID = pa.post_id
WHERE pa.user_id IN ( '144', '6' ) AND
      p.status = 'publish'
GROUP BY p.ID
HAVING MIN(pa.user_id) <> MAX(pa.user_id);

此查询通过将每个帖子限制为ID仅用户144和的记录来工作6。然后,它通过一个HAVING子句断言这两个用户都存在于每个匹配的帖子ID组中。

请注意,我将表别名更改为比实际表名更短的名称。


推荐阅读