高手来看看,这个sql怎么写?很纠结啊!!
时间:2011-11-23
来源:互联网
每次变更ent表的level字段,会保存到ent_history一条新记录,date字段为操作时间。
现在有个情况是ent表的level字段有些记录的值丢失了。需要从history中恢复level字段的值。
history查询的时候按照date倒序取第一条,将level的值重新赋值给ent表。
比如,ent表中有A、B、C三条记录没有level值,ent_history中有A1、A2、B1、B2四条对应记录。即A和B分别有2条历史,C没有历史。
想要ent_history表里有值的就把最新的历史记录中level值赋值给ent,history表没有的就不管,保持ent里的level无值。
用sql怎么搞啊。。。俩表通过code关联。
拜谢啊
作者: liguivicky 发布时间: 2011-11-23
作者: youshang444 发布时间: 2011-11-23
作者: roy_88 发布时间: 2011-11-23
SQL code
UPDATE ent e SET LEVEL = (SELECT LEVEL FROM ent_history eh WHERE eh.code = e.code AND eh.date = (SELECT MAX(DATE) FROM ent_history eh1 WHERE eh1.code = eh.code) ) WHERE LEVEL IS NULL;
上面这个语句的执行效率会相当低。
不过用PL/SQL写个存储过程到是很容易搞定。
作者: LuiseRADL 发布时间: 2011-11-23
SQL code
UPDATE ent e SET LEVEL = (SELECT LEVEL FROM ent_history eh WHERE eh.code = e.code AND eh.date = (SELECT MAX(DATE) FROM ent_history eh1 WHERE eh1.code = eh.code) ) WHERE LEVEL IS NULL;
上面这个语句的执行效率会相当低。
不过用PL/SQL写个存储过程到是很容易搞定。
作者: LuiseRADL 发布时间: 2011-11-23
--his表倒序取第一条 SELECT CODE, LEVEL, DATE FROM (SELECT CODE, LEVEL, DATE, ROW_NUMBER() OVER(PARTITION BY CODE ORDER BY DATE DESC) ROW_ FROM ENT_HISTORY) WHERE ROW_ = 1; --更新ent表数据,最好用merge into MERGE INTO ENT A USING (SELECT CODE, LEVEL, DATE FROM (SELECT CODE, LEVEL, DATE, ROW_NUMBER() OVER(PARTITION BY CODE ORDER BY DATE DESC) ROW_ FROM ENT_HISTORY) WHERE ROW_ = 1) B ON A.CODE = B.CODE AND A.LEVEL IS NULL WHEN MATCHED THEN UPDATE SET A.LEVEL = B.LEVEL;
作者: BenChiM888 发布时间: 2011-11-23
UPDATE ent e SET level =
(SELECT level FROM ent_history eh WHERE eh.code = e.code AND ROWNUM = 1 ORDER BY eh.date DESC )
WHERE level IS NULL;
作者: iamlaosong 发布时间: 2011-11-23
[code=SQL][/code]UPDATE ent e SET level =
(SELECT level FROM ent_history eh WHERE eh.code = e.code AND ROWNUM = 1 ORDER BY eh.date DESC )
WHERE level IS NULL;
作者: iamlaosong 发布时间: 2011-11-23
SQL code
UPDATE ent e SET level = (SELECT level FROM ent_history eh WHERE eh.code = e.code AND ROWNUM = 1 ORDER BY eh.date DESC ) WHERE level IS NULL;
不好意思,尝试发源代码。
作者: iamlaosong 发布时间: 2011-11-23
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28