暂无图片
怎么从另外一张表调用对应的字段,用到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
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
安装12cGRID的时候,执行root.sh报错
回答 10
问题应该是我虚拟机内存太小缘故,换其他环境是没有问题的。
在使用dataguard的时候,我执行了alter system set log_archive_dest_state_2='defer'后,备库还是能同步数据是怎么回事?
回答 2
已采纳
这里有两张图说明了DG的运行原理主库修改数据,记录写在redobuffer,主库的LNS进程会读取redobuffer内容,传递给备库;备库RFS进程接受传过来的数据,写进standbylog,然后将
数据库版本11.2.0.4搭建dg,操作系统版本不一致需要注意什么?
回答 2
这个需求可以完成,但建议保持两边配置一致(包括系统版本,硬件配置等)
请问rac下2套db,给第二个db配置em时老是报错,提示密码不对,但用密码是可以登陆的,有人遇到过吗?
回答 1
是在最后搜索添加数据库的时候报错吗
系统运行时,慢sql大多是锁等待造成,这种情况是需要修改业务逻辑吗?
回答 1
已采纳
先优化慢查询sql,如果没用,再修改业务逻辑。
执行一条归档语句alter system archive log current;
回答 3
可以参考上次你提的问题处理。https://cs.enmotech.com/issueInfo/454找系统和存储确认下根本原因吧,为啥老是出现这种情况
impdp
回答 3
TABLEEXISTSACTIONtruncate参数
12.2rac下打补丁
回答 3
补丁号发出来我看下
Oracle基于函数的索引有什么特点?
回答 1
已采纳
基于函数的索引非常易于使用,不用计算就能拿到函数值;由于复杂的表达式已经在基于函数的索引中提前计算并存储好,优化器能够更精确地估计出其选择性。所以,能用它加快应用的速度,并且不用修改应用中的任何逻辑或
EMCloudControl升级遇到的问题
回答 8
emcc升级,是不是安装一个新版本OMS软件?