繁体   English   中英

使用“WHERE NOT IN”SQL 子查询创建视图

[英]Creating a view with a 'WHERE NOT IN' SQL subquery

我正在尝试将以下 SQL 查询转换为视图。

SELECT * FROM system_accounts 
WHERE system_accounts.id 
NOT IN (SELECT account_id 
        FROM system_group_members
        WHERE system_group_members.group_id = 1);

换句话说,我如何创建一个视图来提供某个组的所有非成员,这些非成员来自系统已知的全部帐户集?

当我在我的 Adminer window 中测试它时,查询工作正常。 但是,我不知道如何在正确的 SQL 中表达变量group_id (在我的示例中为“1”)以获取视图。

我敢肯定我错过了一些微不足道的东西,但这是我会在几个小时内猛烈抨击的事情。 希望这里有好心人能帮助我。

非常感谢您的时间。

您可以创建一个包含所有组的所有非成员的视图。 然后你可以过滤到你想要的组:

CREATE VIEW v_nonmembers AS
    SELECT g.group_id, sa.*
    FROM system_groups g cross join
         system_accounts sa LEFT JOIN
         system_group_members sgm
         ON gsm.group_id = g.group_id AND
            gsm.account_id = sa.id
    WHERE gsm.group_id IS NULL;

然后,您可以将其用作:

SELECT *
FROM v_nonmembers
WHERE group_id = 1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM