我正在使用联接从表中获取一些数据,
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车为空
答案 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"