oracle外键多对一查询,多的表进行条件筛选查询一的表

图片说明

如图所示,常见的做法是当表B中的state全部为1时,则在表A维护一个state=1,此时查询的时候只需要查出表A中state=1的所有numA,但是现实情况是出于前后兼容问题,并不允许表A维护state,求解怎样查询

B表中全部为1,就代表有一个0 就不行。

    SELECT  a.*
    FROM    tableA a
            LEFT OUTER JOIN ( SELECT    Anum
                              FROM      tableb
                              WHERE     STATE = 0
                              GROUP BY  Anum
                            ) b ON a.Anum = b.Anum
    WHERE   b.Anum IS NULL