过滤表我做LEFT JOIN

时间:2013-07-05 07:02:57

标签: postgresql

这是我目前的询问:

SELECT A.* 
FROM A
LEFT JOIN B ON B.a_id = A.id 

现在,假设有一个与C直接相关的表B。我想做的是根据B过滤掉表C的记录 - 我该怎么做?我已经尝试将过滤器放在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 

问题是前面的queryalso过滤掉了表A的结果。我如何实现我想要的结果?

1 个答案:

答案 0 :(得分:1)

您需要将该过滤器添加到连接中:

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的结果。