这个使用NOT IN的简单查询出了什么问题?

Kev*_*Kev 3 sql postgresql

架构:

radio_bin.id
radio.id
radio.radio_bin -> radio_bin.id
Run Code Online (Sandbox Code Playgroud)

查询:

select *
    from radio_bin
Run Code Online (Sandbox Code Playgroud)

72行.

select *
    from radio_bin
    where id in (select radio_bin from radio)
Run Code Online (Sandbox Code Playgroud)

50行.

(和FWIW :)

select distinct radio_bin
    from radio
Run Code Online (Sandbox Code Playgroud)

51行,包括null.

这一切都很好.现在:

select *
    from radio_bin
    where id not in (select radio_bin from radio)
Run Code Online (Sandbox Code Playgroud)

0行.

为什么?我不应该得到没有收音机指向他们的22个radio_bin.id号码吗?

SQL*_*ace 6

试试这个,你有一个空值,null不等于任何甚至不是另一个null

select *
    from radio_bin
    where id not in (select radio_bin from radio where radio_bin  is not null)
Run Code Online (Sandbox Code Playgroud)

另请参阅NOT IN和NULLS,其中显示了如何使用LEFT JOIN或NOT EXISTS