可空的外键

时间:2013-03-17 18:33:07

标签: sql sql-server sql-server-2008

我有以下sql语句:

SELECT Useraccount.Name, Company.Name  
 FROM Useraccount, Company
WHERE Useraccount.CompanyId = Company.ID

此声明显示所有useraccount-names及其公司名称。

但是我也有useraccounts,其中companyId为0,我也想显示它们(在这种情况下公司的名称可能是一个空字符串)。 我怎么能这样做?

4 个答案:

答案 0 :(得分:1)

改为使用LEFT JOIN

SELECT 
  Useraccount.Name, 
  Company.Name  
FROM Useraccount
LEFT JOIN Company ON Useraccount.CompanyId = Company.ID;

您使用旧的INNER JOIN语法JOIN了两个表。请避免使用此旧连接语法,并使用JOIN关键字使用ANSI SQL-92显式语法。有关更多信息,请参阅此处:

有关不同联接类型的详细信息:

答案 1 :(得分:1)

LEFT JOIN可以帮到你:

SELECT Useraccount.Name, Company.Name  
FROM Useraccount
 LEFT JOIN Company ON Useraccount.CompanyId = Company.ID

答案 2 :(得分:0)

您可以使用 -

SELECT Useraccount.Name, Company.Name  
 FROM Useraccount, Company
WHERE Useraccount.CompanyId = Company.ID or Useraccount.CompanyId =0

答案 3 :(得分:0)

当您使用 LEFT JOIN 时,无论行的匹配状态如何,您都将从左表中获取所有行。

SELECT 
Useraccount.Name AS UserAccountName, 
Company.Name AS CompanyName 
FROM Useraccount
LEFT JOIN Company 
ON Useraccount.CompanyId = Company.ID;