排除属于组的记录的SQL查询



我不敢相信这个问题在其他地方没有得到回答,但我似乎不知道正确的词语来表达我想要做的事情。我正在使用Ruby/Rails和PostgreSQL。

我有一堆用户在DB,我试图添加到一个组基于名称搜索。我需要返回不属于特定组的用户,但也有一个连接表(UserGroups,具有适当的fk)。

是否有一种简单的方法来使用此配置来执行此查询,而不必导致抓取属于该组的所有用户并做类似.where.not(id: users_in_group.pluck(:id))的事情(这些组可能非常大,所以我不想在用户类型的文本搜索上将该查询发送到DB)。

我需要返回不属于特定组的用户

SELECT *
FROM   users u
WHERE  username ~ 'some pattern'  -- ?
AND    NOT EXISTS (
SELECT FROM user_groups ug
WHERE  ug.group_id = 123       -- your group_id to exclude here
AND    ug.user_id  = u.id 
);

:

  • 选择其他表
  • 中不存在的行

相关内容

  • 没有找到相关文章

最新更新