在id 51 后的 数据 搜出来的factory 信息 是 NULL
能不能 改成 如果 company表的factory_id 是 NULL 的时候,
默认关联的的factory表的id是1,
这个不设置 factory_id 默认值,
有办法吗?
在id 51 后的 数据 搜出来的factory 信息 是 NULL
能不能 改成 如果 company表的factory_id 是 NULL 的时候,
默认关联的的factory表的id是1,
这个不设置 factory_id 默认值,
有办法吗?
用sql加默认值。。。
select datas.cp_id, datas.cp_name, datas.f_id,
(
case when datas.f_id is null then 1
else datas.f_id end
) as factory_id, datas.f_name
from (
select cp.id as cp_id, cp.name as cp_name, f.id as f_id, f.name as f_name
from cp
left join factorys f
on cp.factory_id = f.id
) datas
套一层判断是否为空就好了嘛
上面的兄弟只把结果里的factory_id为空改为1,不知道楼主是不是还要取出1关联到的factorys表id=1的字段数据,如果不需要的话就可能会出现factory_id为1时factorys两种数据的情况(关联到1的就有值,其他的就都是空值)
select cp.*,fs.name,fs.email from (select id,name,email,case when factory_id is null then 1 else factory_id end factory_id from companys) cp left join factorys fs on cp.factory_id=fs.id;
2 回答2.4k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
5 回答1.5k 阅读
2 回答2.2k 阅读
2 回答1k 阅读✓ 已解决
3 回答2.1k 阅读
1 回答1.5k 阅读✓ 已解决
这样写估计是最简单的吧,只要改动left join后的On条件 改成ifnull(cp.factory_id,1)
最近忙着陪女票,好几周没来segmentfault答题了。