我有以下 sql 语句:
SELECT Useraccount.Name, Company.Name
FROM Useraccount, Company
WHERE Useraccount.CompanyId = Company.ID
此语句显示所有用户帐户名称及其公司名称。
但我也有公司 ID 为 0 的用户帐户,我也想让它们显示(在这种情况下,公司名称可能是一个空字符串)。我怎样才能做到这一点?
我有以下 sql 语句:
SELECT Useraccount.Name, Company.Name
FROM Useraccount, Company
WHERE Useraccount.CompanyId = Company.ID
此语句显示所有用户帐户名称及其公司名称。
但我也有公司 ID 为 0 的用户帐户,我也想让它们显示(在这种情况下,公司名称可能是一个空字符串)。我怎样才能做到这一点?
ALEFT JOIN
会为您解决问题:
SELECT Useraccount.Name, Company.Name
FROM Useraccount
LEFT JOIN Company ON Useraccount.CompanyId = Company.ID
改用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
关键字。有关更多信息,请参见:
有关不同联接类型的更多信息:
当您使用LEFT JOIN时,无论行的匹配状态如何,您都将从左表中获取所有行。
SELECT
Useraccount.Name AS UserAccountName,
Company.Name AS CompanyName
FROM Useraccount
LEFT JOIN Company
ON Useraccount.CompanyId = Company.ID;
您可以使用 -
SELECT Useraccount.Name, Company.Name
FROM Useraccount, Company
WHERE Useraccount.CompanyId = Company.ID or Useraccount.CompanyId =0