假设我有两个表Phone和Color
所以在Phone表中包含PhoneID,make,colorID
在颜色表上它包含colorID,colorname
两个colorID与FK链接,但手机可能有空白colorID
如果我想显示一个包含PhoneID的表,请使用colorname,即使它没有colorID
所以我有这样的查询
SELECT [PhoneID], [make], [colorID], FROM [Phone]
INNER JOIN [Color]
ON Phone.colorID = [color].[colorID];
但我希望它显示所有结果,即使它没有colorID,我希望它显示colorname而不是colorID。
我对如何做到这一点感到有点困惑 感谢
答案 0 :(得分:4)
您应该使用INNER JOIN
。
LEFT JOIN
左连接定义:" LEFT JOIN关键字返回左表(table1)中的所有行,右表(table2)中的匹配行。当没有匹配时,结果在右侧为NULL。"
答案 1 :(得分:1)
使用
的左连接SELECT [PhoneID], [make], [colorID], FROM [Phone]
Left JOIN [Color]
ON Phone.colorID = [color].[colorID];
就颜色名称而言,您必须使用颜色表加入并打印colorName而不是id。
答案 2 :(得分:1)
您想使用LEFT JOIN。
SELECT [PhoneID], [make], [colorID], FROM [Phone]
LEFT JOIN [Color]
ON Phone.colorID = [color].[colorID];
答案 3 :(得分:1)
如上所述,请选择“左连接”以获取所需的结果。 此外,如果需要显示颜色名称而不是colorID,请检查SQL函数ISNULL(假设您使用的是MS SQL Server)。 当colorID为空时,ISNULL函数将允许您设置默认值
类似于:
select phoneID, make, ISNULL(colorID, 'your_default_value') FROM .....
LEFT JOIN ......