来自2个表的SQL查询

zSy*_*sis 0 sql oracle10g

我目前有两个表看起来像这样:

表格1

Id | AddressNumber | AddressStreet | AddressZip
------------------------------------------------
1   | 50           | Fake          | 60101
2   | 300          | Fake          | 60101
3   | 50           | Fake2         | 60101
4   | 50           | Fake          | 60103
Run Code Online (Sandbox Code Playgroud)

表2

AddressLowRange | AddressHighRange | AddressStreet | AddressZip
---------------------------------------------------------------
50             | 200              | Fake          | 60101
20             | 50               | Other Fake    | 70102
Run Code Online (Sandbox Code Playgroud)

我需要从表1中找到一个Ids列表,其中地址不在表2中.因此,对于上面的示例数据,我将返回ID 2,3和4.

bob*_*obs 9

试试这个.

SELECT Id
FROM Table1
WHERE NOT EXISTS
    (SELECT *
    FROM Table2
    WHERE Table1.AddressNumber BETWEEN Table2.AddressLowRange AND Table2.AddressHighRange
        AND Table1.AddressStreet = Table2.AddressStreet
        AND Table1.AddressZip = Table2.AddressZip
    )
;
Run Code Online (Sandbox Code Playgroud)