0

我有以下 sql 语句:

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

此语句显示所有用户帐户名称及其公司名称。

但我也有公司 ID 为 0 的用户帐户,我也想让它们显示(在这种情况下,公司名称可能是一个空字符串)。我怎样才能做到这一点?

4

4 回答 4

1

ALEFT JOIN会为您解决问题:

SELECT Useraccount.Name, Company.Name  
FROM Useraccount
 LEFT JOIN Company ON Useraccount.CompanyId = Company.ID
于 2013-03-17T18:37:53.740 回答
1

改用LEFT JOIN

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

您正在INNER JOIN使用旧JOIN语法 ing 两个表。请避免使用这种旧的连接语法并使用 ANSI SQL-92 显式语法和JOIN关键字。有关更多信息,请参见:

有关不同联接类型的更多信息:

于 2013-03-17T18:35:07.197 回答
0

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

SELECT 
Useraccount.Name AS UserAccountName, 
Company.Name AS CompanyName 
FROM Useraccount
LEFT JOIN Company 
ON Useraccount.CompanyId = Company.ID;
于 2013-03-17T18:44:05.990 回答
0

您可以使用 -

SELECT Useraccount.Name, Company.Name  
 FROM Useraccount, Company
WHERE Useraccount.CompanyId = Company.ID or Useraccount.CompanyId =0
于 2013-03-17T18:37:54.260 回答