获取所有价值内部加入MYSQL

时间:2016-09-23 10:22:36

标签: mysql join inner-join outer-join

我有一个简单的问题,我想知道你是怎么做到的......

让我们说

Table 1 I have userId and name (1000 records)
Table 2 I have carId and name (90 records)
Table 3 I have userId, carId and value (820 records)

有一个简单的连接可以让我完成我想要的事情

select * from table3 A 
inner join table1 B on A.userId=B.userId 
inner join table2 C on A.carId=C.carId;

但是,如果用户没有拥有特定类型的汽车,则应将该值设置为0,而不是在计数中显示。

让事情变得简单

我有3(0-2)个用户和2(0-1)个汽车制造商, 我想要的数据可能是这样的,

从上述查询生成的当前数据:

0,1,200
1,0,100
1,1,100

虽然我希望它像这样(包括那些没有记录,但如果没有记录则将默认值设置为0)

id,car,val
0,0,0
0,1,200
1,0,100
1,1,100
2,0,0
2,1,0

谢谢

1 个答案:

答案 0 :(得分:0)

试试这个:关键是使用左外连接,而不是内连接。内连接要求在两个连接表中都有一行。左连接只需要在指定的第一个(左侧)表中有一行。然后,您可以使用“coalesce”语句为空行显示0而不是null。

select
  u.userId,
  coalesce(c.carId, 0),
  coalesce(uc.value, 0)
from
  table1 u
  left outer join table3 uc on u.userId = uc.userId
  left outer join table2 c on uc.carId = c.carId