jhi*_*ner 6 sql postgresql exists left-join
这是我正在尝试做的简化示例.我有两张桌子,A和B.
A B
----- -----
id id
name a_id
value
Run Code Online (Sandbox Code Playgroud)
我想只选择A中的行,其中B中行的所有值都与where子句匹配.就像是:
SELECT * from A INNER JOIN B on B.a_id = A.id WHERE B.value > 2
Run Code Online (Sandbox Code Playgroud)
上述查询的问题是,如果B中的任何行的值> 2,我将从A获得相应的行,而我只想要来自A的行
1.)ALL B中的行为B.a_id = A.id匹配WHERE,OR
2.)B中没有引用A的行
B基本上是一个过滤器表.
SELECT *
FROM a
WHERE NOT EXISTS
(
SELECT NULL
FROM b
WHERE b.a_id = a.a_id
AND (b.value <= 2 OR b.value IS NULL)
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1954 次 |
最近记录: |