Postgresql 与之进行左联接的筛选器表

Postgresql 与之进行左联接的筛选器表,postgresql,Postgresql,以下是我目前的问题: SELECT A.* FROM A LEFT JOIN B ON B.a_id = A.id 现在,假设有一个与B直接相关的表C。我想做的是根据C筛选出表B的记录-我该怎么做?我已尝试将过滤器放置在WHERE部分: SELECT A.* FROM A LEFT JOIN B ON B.a_id = A.id LEFT JOIN C ON B.c_id = C.id WHERE C.id > 10 问题是前面的查询也会过滤掉表A的结果。如何实现我想要的结

以下是我目前的问题:

SELECT A.* 
FROM A
LEFT JOIN B ON B.a_id = A.id 
现在,假设有一个与
B
直接相关的表
C
。我想做的是根据
C
筛选出表
B
的记录-我该怎么做?我已尝试将过滤器放置在WHERE部分:

SELECT A.* 
FROM A
LEFT JOIN B ON B.a_id = A.id 
LEFT JOIN C ON B.c_id = C.id 
WHERE C.id > 10 

问题是前面的查询也会过滤掉表
A
的结果。如何实现我想要的结果?

您需要将该筛选器加入:

SELECT * 
FROM A
LEFT JOIN 
(
   SELECT B.*
   FROM B  
   INNER JOIN C ON B.c_id = C.id AND C.id > 10 
) AS B ON B.a_id = A.id

它不会过滤掉A的结果

但是它也不会过滤掉B的结果。修改了ans。为此,您必须使用子查询。请向上投票并选择作为有效的ans。这将对我很有帮助。