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

时间:2018-10-17 06:55:19

标签: c# sql if-statement join inner-join

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

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

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

这里是一个例子。 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。而且aTable中没有这样的ID。 结果将是

  

1辆车是宝马

     

有2辆车是奔驰车

     

3辆汽车是奥迪

在这种情况下,我想做的就是给aTable提供一些NULL值或其他值,因此结果必须类似于

  

1辆车是宝马

     

2辆车是梅塞德斯

     

3辆汽车是奥迪

     

4车为空

3 个答案:

答案 0 :(得分:5)

您应该使用LEFT JOIN而不是INNER JOIN

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

答案 1 :(得分:1)

您应该使用LEFT JOIN而不是INNER JOIN。

答案 2 :(得分:0)

也许您需要Outer Join而不使用Inner Join

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

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