我有以下SQL語句:空的外鍵
SELECT Useraccount.Name, Company.Name
FROM Useraccount, Company
WHERE Useraccount.CompanyId = Company.ID
這一聲明顯示了所有useraccount-名字和他們的公司的名稱。
但我也有useraccounts其中companyId是0,我也想讓他們顯示(在這種情況下公司的名稱可以是一個空字符串)。 我該怎麼做?
我有以下SQL語句:空的外鍵
SELECT Useraccount.Name, Company.Name
FROM Useraccount, Company
WHERE Useraccount.CompanyId = Company.ID
這一聲明顯示了所有useraccount-名字和他們的公司的名稱。
但我也有useraccounts其中companyId是0,我也想讓他們顯示(在這種情況下公司的名稱可以是一個空字符串)。 我該怎麼做?
使用LEFT JOIN
代替:
SELECT
Useraccount.Name,
Company.Name
FROM Useraccount
LEFT JOIN Company ON Useraccount.CompanyId = Company.ID;
你是INNER JOIN
與老JOIN
語法荷蘭國際集團的兩個表。請避免使用舊的連接語法,並使用關鍵字JOIN
使用ANSI SQL-92顯式語法。有關更多信息,請參見本:
欲瞭解更多信息有關不同連接類型:
非常感謝。 – mosquito87 2013-03-17 18:49:49
@ mosquito87 - 隨時歡迎您:) – 2013-03-17 18:51:56
一個LEFT 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, 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;
嗨,你介意解釋這項工作的方式和原因嗎? – 2013-03-17 19:03:47
使用'LEFT'加入。 – 2013-03-17 18:34:43
並且不要使用'0'。我不喜歡它們,但這就是'NULL'的意思。如果將0轉換爲空值,則可以添加明確的外鍵約束。 – 2013-03-17 18:37:25