回答

收藏

关于LEFT JOIN SQL查询的WHERE帮助

技术问答 技术问答 108 人阅读 | 0 人回复 | 2023-09-13

我正在尝试构造一个查询,该查询将包括指示用户是否下载了文档的列。我有一个名为HasDownloaded的表,其中包含以下各列:id,documentID,memberID。找出用户是否下载了
, q6 K' R% Y0 ]: Z特定 文档很容易;但我需要生成一个查询,其结果将如下所示:$ w* o: X. P0 o- D4 [
name              id
& i7 M6 u. w* O+ t# V& _1 g* Y3 ]----------------------' ~. e% E9 T* m9 `/ `. N1 M: a- R4 k
abc               NULL
* E2 f' k- l" \' o9 W! W. e$ ]9 mbbb               2
( W& Q5 x+ F) t" ]8 R: zccc               53
( f/ s. z% ~# O/ L0 M+ pddd               NULL
5 H* g; {" q- }. c4 E; \7 Jeee               13
( z) s: F; W$ m该ID并不是很重要;我感兴趣的是文档是否已下载(是否为NULL)。  i8 c! H( n/ z7 g+ \. C0 K& Z$ h
这是我的查询:( K& S) o' k& G) h
SELECT Documents.name, HasDownloaded.id FROM Documents
5 y  ?: O( u3 {% e  Y$ G$ sLEFT JOIN HasDownloaded ON HasDownloaded.documentID = Documents.id
9 I8 [6 [- P) [0 W; R1 g! YWHERE HasDownloaded.memberID = @memberID
( ]! y/ t4 G- {7 I1 I# ]% p问题是,只有在HasDownloaded表中存在指定用户的条目时,这才会返回值。我想保持简单,只在HasDownloaded中 包含
" w  W" T6 `0 y2 D0 y已下载文档的条目。因此,如果用户1下载了abc,bbb和ccc,我仍然希望ddd和eee出现在结果表中,而id为NULL。但是WHERE子句只为我提供了存在条目的值。! G# Q9 r. b* D! X
我不是很多SQL专家-在这里有一个运算符可以给我我想要的吗?我应该采取其他方法吗?还是这不可能?
( r/ i* g) z& x2 I# K6 ]0 V                " i& g' g& B  j3 U7 t4 d+ a
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则