代码之家  ›  专栏  ›  技术社区  ›  David

SQL连接2个表,条件由于条件而采用一些默认的空值

  •  -2
  • David  · 技术社区  · 7 年前

    我正在使用join从表中获取一些数据,

        SELECT da.aName AS aName FROM dbo.bTable 
    INNER JOIN aTable da ON dbo.bTable.nameType = da.ID"
    

    这个选择有效。但是,如果nameType是某个不在da.ID中的新数字,那么这一行根本不显示。我想要的是将这些连接到表中,但是如果aTable根本不包含这样的数字,那么必须采用一些默认值。

    下面是一个例子。

    id=1 aName = bmw
    id=2 aName= mersedes
    id=3 aName= audi
    

    bTable有一份汽车清单,我必须把它们都买下来

    1    nameType =1
    2    nameType =2
    3    nameType =3
    4    nameType =5
    

    所以我必须把这4辆车都展示出来。 我的代码只会显示3,因为4号车的nameType是5,而且在表中没有这样的ID。 结果将是

    一辆是宝马

    2辆车是梅塞德斯

    我想做的是,在这种情况下,我可以给一些空值或一些东西,所以结果必须是这样的

    一辆是宝马

    3 回复  |  直到 7 年前
        1
  •  5
  •   Maksym Fedorov    7 年前

    你应该使用左连接而不是内连接

    SELECT da.aName AS aName 
    FROM dbo.bTable 
    LEFT JOIN aTable da ON dbo.bTable.nameType = da.ID
    
        2
  •  1
  •   gokhanpolat    7 年前

        3
  •  0
  •   dwir182    7 年前

    也许是你需要的 Outer Join 不要使用 Inner Join

    因为内部连接 选择两个表中具有匹配值的记录

    SELECT da.aName AS aName 
    FROM dbo.bTable 
    LEFT OUTER JOIN aTable da ON dbo.bTable.nameType = da.ID"