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

时间:2010-04-05 15:10:37

标签: 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

示例连接

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的重复值和非零值。

可能的?

2 个答案:

答案 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