在LEFT JOIN SQL查询中帮助WHERE

前端之家收集整理的这篇文章主要介绍了在LEFT JOIN SQL查询中帮助WHERE前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试构造一个查询,其中将包含一列,指示用户是否已下载文档。我有一个名为HasDownloaded的表与以下列:id,documentID,memberID。查找用户是否下载了特定的文档很容易;但是我需要生成一个查询,结果将如下所示:
name              id
----------------------
abc               NULL
bbb               2
ccc               53
ddd               NULL
eee               13

身份证并不重要;我感兴趣的是文件是否已经下载(是否为NULL)。

这是我的查询

SELECT Documents.name,HasDownloaded.id FROM Documents
LEFT JOIN HasDownloaded ON HasDownloaded.documentID = Documents.id
WHERE HasDownloaded.memberID = @memberID

问题是,只有在HasDownloaded表中指定用户的条目存在时,这才返回值。我想保留这个简单,只有HasDownloaded中有已经下载的文档的条目。所以如果用户1已经下载了abc,bbb和ccc,我仍然希望ddd和eee显示在结果表中,只要id为NULL。但是WHERE子句仅给出了条目存在的值。

我不是一个sql专家 – 有没有一个运算符会给我我想要的东西?我应该采取不同的方法吗?还是这不可能?

解决方法

将WHERE子句中的条件移动到连接条件。
SELECT Documents.name,HasDownloaded.id FROM Documents
LEFT JOIN HasDownloaded ON HasDownloaded.documentID = Documents.id 
  AND HasDownloaded.memberID = @memberID

只要您想要引用左连接表,WHERE子句将会是必需的。

猜你在找的MsSQL相关文章