如用户解决MySQL中连接两个表值(一个表存储用户键值和其他存储defaule值)的问题?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (89)

有以下表格:

id   | user_id | fk_id |   value  
---------------------------
12   |   1     |   1   |   "0"
13   |   1     |   2   |   "1"
15   |   1     |   3   |   "1"
16   |   2     |   1   |   "0"  

现有另一个存储默认值和值的表:

id   | fk_id |   value  
-----------------------
10   |   1   |   "1"
11   |   2   |   "0"
12   |   3   |   "1"
13   |   4   |   "0"

我希望从默认表中获取值,输出应该如下所示:

user_id | fk_id |   value  
---------------------------
1       |   1   |   "0"
1       |   2   |   "1"
1       |   3   |   "1"
1       |   4   |   "0"
2       |   1   |   "0" 
2       |   2   |   "0"
2       |   3   |   "1"
2       |   4   |   "0"

如何才能得到这样的输出结果呢?

提问于
用户回答回答于

用cross join生成行,然后生成left join,若要引入默认值,请执行以下操作。

select u.user_id, d.fk_id, coalesce(m.value, d.value) as value
from (select distinct user_id from main) u cross join
     defaults d left join
     main m
     on m.user_id = u.user_id and m.fk_id = d.fk_id;

扫码关注云+社区

领取腾讯云代金券