通过示例解释,取两个表,A和B
Table A
id foo
1 x
2 y
3 z
Table B
id aid bar
1 3 50
2 1 100
示例连接
SELECT foo, bar FROM a, b WHERE a.id = b.aid;
获得
的结果foo bar
z 50
x 100
我想要做的是获取foo
的所有值,对于没有相应bar
值的任何实例,为该列返回0。
foo bar
z 50
y 0
x 100
我最好的猜测是
SELECT foo, bar AS br FROM a, b
WHERE a.id = b.aid
OR a.id NOT IN (SELECT aid FROM b);
但是返回bar的重复值和非零值。
可能的?
答案 0 :(得分:5)
SELECT a.foo, COALESCE(b.bar, 0) as bar
FROM a
LEFT OUTER JOIN b ON a.id = b.aid
答案 1 :(得分:2)
SELECT a.foo, IFNULL(b.bar, 0) AS bar
FROM tablea AS a
LEFT JOIN tableb AS b
ON a.id=b.aid