左键不匹配

时间:2018-07-24 04:52:43

标签: sql database ms-access

如果我有一个名为“ FILES”的表1和一个名为“ Networks”的表2,并且FILES.Network_ID中的值必须来自Networks.Network_ID中定义的列表

如果我想运行查询以查明表1的network_id下是否有未在表2中定义的值,我尝试了以下显然无效的方法...此外,我正在使用MS ACCESS的SQL视图

SELECT *
FROM (FILES f LEFT JOIN Networks 
       ON f.Network_ID <> Networks.Network_ID)

2 个答案:

答案 0 :(得分:3)

此查询无法正常工作,因为如果ID不匹配,您将尝试加入,因此理想情况下,在进行连接时,行将匹配

例如,如果表文件包含具有网络ID 1,2,3的行,而表网络包含网络ID 1,2,则在加入后,您将获得具有网络ID [1, 2],[2,1],[3,1],[3,2]。

实例,如果您使用子查询,然后使用 IN 子句对其进行过滤

select * from files where network_id not in (select network_id from networks);

答案 1 :(得分:1)

尝试一下

SELECT *
FROM (FILES f LEFT JOIN Networks 
       ON f.Network_ID =Networks.Network_ID)
      Where Networks.Network_ID Is Null

为确保数据完整性,请在两个表之间创建一个关系。

enter image description here