例如
select * from test1 where ID = '8675309'; = 1 entry
select * from test2 where ID = '8675309'; = null
select * from test3 where ID = '8675309'; = 1 entry
我尝试过这种方法但是没有按预期工作。
SELECT
t1.id
FROM
test1 t1
LEFT OUTER JOIN test2 t2 ON t2.id = t1.id
LEFT OUTER JOIN test3 t3 ON t3.id = t1.id
AND
t1.id = '8675309'
结果未显示8675309,显示所有表值。
答案 0 :(得分:1)
SELECT
t1.*
,t2.*
,t3.*
FROM
test1 t1
LEFT OUTER JOIN test2 t2 ON t2.id = t1.id
LEFT OUTER JOIN test3 t3 ON t3.id = t1.id
where
t1.id = '8675309'
答案 1 :(得分:0)
您需要where
子句,而不是on
子句。当from
子句只有left join
时,第一个表上的条件应该在where
子句中。所有其他表的条件应该在on
子句中。
这可能听起来很神秘,但有一个简单的规则:即使left join
子句的计算结果为false,on
也会保留第一个表中的所有行。因此,第一个表格的条件无关紧要。
你想:
SELECT t1.id
FROM test1 t1 LEFT JOIN
test2 t2
ON t2.id = t1.id LEFT JOIn
t3
ON t3.id = t1.id
WHERE t1.id = 8675309;
我还应该注意到你过度简化了你的查询,因此基本上相当于:
SELECT t1.id
FROM test1 t1
WHERE t1.id = 8675309;
我认为这不是你的意图。