0

这是我目前的查询:

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 

问题是前面的查询也过滤掉了 tableA的结果。如何达到我想要的结果?

4

1 回答 1

1

您需要将该过滤器放入 join :

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

于 2013-07-05T07:04:41.363 回答