2009-02-14 80 views
1

我是一个数据库新手,所以请原谅我的天真。 我有以下SQL语句:检索所有记录 - 内部连接

SELECT DISTINCT dbo.tb_user.familyName, 
dbo.user_email.email FROM dbo.tb_user 
INNER JOIN dbo.user_email ON (dbo.tb_user.id = dbo.user_email.userID) 

这将返回其中一个电子邮件地址存在的记录。

我想要做的是检索所有的记录,以便我可以看到哪些用户有和没有电子邮件地址记录在数据库中。

这可以实现吗?

任何提示/帮助非常感谢。

回答

7

你需要使用一个左外连接..

SELECT DISTINCT dbo.tb_user.familyName,dbo.user_email.email 
FROM dbo.tb_user LEFT OUTER JOIN dbo.user_email 
ON (dbo.tb_user.id = dbo.user_email.userID) 
3

你想要的东西被称为“外部联接”。在外连接中,表格列出的顺序与您列出的内连接不同。第二个列出的是外部列表,并且在没有匹配的情况下将显示NULL(至少在MySQL中,我迄今为止唯一使用外部连接的情况)。NULL

SELECT DISTINCT dbo.tb_user.familyName, dbo.user_email.email FROM dbo.tb_user LEFT OUTER JOIN dbo.user_email ON(dbo.tb_user.id = dbo.user_email.userID)

0

尝试这个工程....

SELECT DISTINCT tb_user.familyName, 
       user_email.email 
FROM tb_user 
LEFT JOIN user_email 
ON tb_user.id = user_email.userID