Sql 可空外键
我有以下sql语句:Sql 可空外键,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有以下sql语句: SELECT Useraccount.Name, Company.Name FROM Useraccount, Company WHERE Useraccount.CompanyId = Company.ID 此语句显示所有用户帐户名及其公司名称 但我也有一些用户帐户,其中companyId为0,我也希望显示它们(在本例中,公司名称可能是空字符串)。 我如何才能做到这一点?使用左连接: SELECT Useraccount.Name, Company.N
SELECT Useraccount.Name, Company.Name
FROM Useraccount, Company
WHERE Useraccount.CompanyId = Company.ID
此语句显示所有用户帐户名及其公司名称
但我也有一些用户帐户,其中companyId为0,我也希望显示它们(在本例中,公司名称可能是空字符串)。
我如何才能做到这一点?使用
左连接
:
SELECT
Useraccount.Name,
Company.Name
FROM Useraccount
LEFT JOIN Company ON Useraccount.CompanyId = Company.ID;
您正在使用旧的JOIN
语法对这两个表进行internaljoin
操作。请避免使用这种旧的联接语法,并使用ANSI SQL-92显式语法,使用join
关键字。有关更多信息,请参见此:
LEFT JOIN
将为您带来以下好处:
SELECT Useraccount.Name, Company.Name
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
当您使用左联接时,无论行的匹配状态如何,都将从左表中获取所有行
SELECT
Useraccount.Name AS UserAccountName,
Company.Name AS CompanyName
FROM Useraccount
LEFT JOIN Company
ON Useraccount.CompanyId = Company.ID;
不要使用
0
。我不喜欢它们,但这就是NULL
的用途。如果将0转换为null,则可以添加显式外键约束。