暂无图片
怎么从另外一张表调用对应的字段,用到update里的where条件?
我来答
分享
海阔天空
2022-04-03
怎么从另外一张表调用对应的字段,用到update里的where条件?

我有个表tj_cesi里有个text字段,该字段里内容有很多,如表格所示主要内容为aaa1---aaan(有几百个,而且是没规律的存在,长度或个数都不一样,比如是asd1、d2f3、asdfd、rad2dss.....等等,我用aaa1-n表示,是为了简单描述),而每个相同的aaa?有不同的个数的存在,但相对应的aaan_count都是唯一的一个。

我想到过用过渡表的方式,先做个text表,把text内容写进去


insert into text表 (text) select text from tj_cs b group by b.text;
update text表 set text_count=text||'_count';
update tj_cs a set numcount=(select count(*) from cgltj_cs where text='aaa1') where a.text='aaa1_count';


我要实现的第1个目的是在每个aaan_count的numcount字段里统计个数(类似下面语句,但写起来会有几百条语句)
update tj_cesi a set numcount=(select count(*) from cgltj_cesi where text='aaa2') where a.text='aaa2_count';
update tj_cesi a set numcount=(select count(*) from cgltj_cesi where text='aaa3') where a.text='aaa3_count';



update tj_cesi a set numcount=(select count(*) from cgltj_cesi where text='aaan') where a.text='aaan_count';
我要实现的第2个目的是在每个aaa1-n的n_cs1-n里的个数与其相对应的numcount的比值,写到它对应的aaa _count里,(类似下面语句,但写起来会有几千条语句)
update tj_cs a set n_cs1=(select count(*) from tj_cs where text='aaa1' and cs1=1)/numcount where a.text='aaa1_count';
update tj_cs a set n_cs1=(select count(*) from tj_cs where text='aaa2' and cs1=1)/numcount where a.text='aaa2_count';
update tj_cs a set n_cs1=(select count(*) from tj_cs where text='aaa3' and cs1=1)/numcount where a.text='aaa3_count';


(听说用存储的方法,但存储方法没学过),不知道有没有哪位老师可以用简单的方式实现,谢谢!

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
DarkAthena

你如果能看懂下面这个sql的写法,估计就不会问这个问题了。。。

update tj_cesi a set numcount=(select count(*) from cgltj_cesi b where b.text=a.text) where exists (select 1 from cgltj_cesi b where b.text=a.text);

其实这个sql转换成查询语句就是

select numcount, (select count(*) from cgltj_cesi b where b.text=a.text) from tj_cesi a ;

查询的第2个字段更新到第1个字段,就是上面那段update了,加exists条件的目的是,如果cgltj_cesi表里没有对应数据就不用更新了,以免"误伤"

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏