MySQL - 如果记录不是IN,则加入为零

Der*_*k H 1 mysql join

要通过示例进行解释,请选择两个表A和B.

Table A
id  foo
 1   x
 2   y
 3   z


Table B
id  aid bar
 1   3   50
 2   1  100
Run Code Online (Sandbox Code Playgroud)

一个示例连接

SELECT foo, bar FROM a, b WHERE a.id = b.aid;
Run Code Online (Sandbox Code Playgroud)

Garners的结果

foo  bar
 z    50
 x   100
Run Code Online (Sandbox Code Playgroud)

我想要做的是获取所有值的值,foo对于没有相应bar值的任何实例,为该列返回0.

foo  bar
 z    50
 y     0
 x   100
Run Code Online (Sandbox Code Playgroud)

我最好的猜测就是这样

SELECT foo, bar AS br FROM a, b 
WHERE a.id = b.aid 
OR a.id NOT IN (SELECT aid FROM b);
Run Code Online (Sandbox Code Playgroud)

但是返回bar的重复值和非零值.

可能?

new*_*ing 5

SELECT a.foo, COALESCE(b.bar, 0) as bar
FROM a
LEFT OUTER JOIN b ON a.id = b.aid
Run Code Online (Sandbox Code Playgroud)