关于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
解决方案: |
|
|
|
|
|