这是我目前的询问:
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
的结果。我如何实现我想要的结果?
答案 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的结果。