代码之家  ›  专栏  ›  技术社区  ›  Walid Abdelal

左连接不匹配

  •  0
  • Walid Abdelal  · 技术社区  · 6 年前

    如果表1称为“文件”,表2称为“网络”,则FILES.Network中的值必须来自Networks.Network中定义的列表

    如果我想运行一个查询来找出表1中network\u id下是否有表2中没有定义的值,我尝试了下面的方法,但显然没有效果…而且,我使用的是MS ACCESS的SQL视图

    SELECT *
    FROM (FILES f LEFT JOIN Networks 
           ON f.Network_ID <> Networks.Network_ID)
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   codeLover Sumit Tyagi    6 年前

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

    例如 如果表文件包含网络id为1,2,3的行,而表网络包含网络id为1,2的行,则在加入时,将获得网络id为[1,2]、[2,1]、[3,1]、[3,2]的行的组合。

    如果使用子查询,然后使用 条款有效

    select * from files where network_id not in (select network_id from networks);
    
        2
  •  1
  •   Santosh    6 年前

    试试这个

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

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

    enter image description here