MERGE INTO games_data b
using (select sub_id, game_name, registe_date, rn
from (select sub_id,
game_name,
a.registe_date,
row_number() over(partition by game_name, sub_id, trunc(registe_date) order by sub_id, registe_date) as rn
from game_user_details a
where trunc(registe_date) = trunc(sysdate))
where rn = 1) c
on (trunc(b.DATE1) = trunc(c.registe_date))
WHEN MATCHED THEN
update set b.site_id = c.sub_id, b.date1 = c.registe_date
WHEN NOT MATCHED THEN
insert (site_id, date1) values (c.sub_id, c.registe_date)
上面报 b.DATE1 无效标识,可我games_data b表中明明就有date1这个字段找了下MERGE INTO 也支持子查询,我找不出错误 出在哪
大家帮我看下
数据库 oracle 9i R2
解决方案 »
- oracle 11g中 在dos中 输入 :sqlplus scott/tiger 为什么出现错误?
- 远程数据库表在本地个人电脑中本地数据库备份的方法
- PL/SQL导入dmp文件,数据没进去
- erwin链接Oracle数据库,用过的进来看下!
- 有没有最方便的导入dbf到oracle的方法
- web中把上传文件保存在数据库的好坏?
- 请问:数学公式中的各种字符可以保存在oracle数据库中吗?是以什么样的格式??
- 一个典型面试题--写一存储过程,请高手帮忙!!谢了
- 总是报错 group function is not allowed here 第6行
- 非常奇怪的 12152 错误 求大神关注
- 请问一下各位Oracle老师们在这个领域,都考取的是什么ORACLE认证???
- Oracle另存为时报错
update set b.site_id = c.sub_id, b.date1 = c.registe_date这句把b.date1 = c.registe_date去掉试试
MERGE INTO games_data b
using (select sub_id, game_name, registe_date, rn
from (select sub_id,
game_name,
a.registe_date,
row_number() over(partition by game_name, sub_id, trunc(registe_date) order by sub_id, registe_date) as rn
from game_user_details a
where trunc(registe_date) = trunc(sysdate))
where rn = 1) c
on 1=1
WHEN MATCHED THEN
update set b.site_id = c.sub_id, b.date1 = c.registe_date
WHEN NOT MATCHED THEN
insert (site_id, date1) values (c.sub_id, c.registe_date)
我把on 后改成 1=1,又报缺少减少字 on
是不是 这语法 oracle 9ir2 不支持啊
应该是b.date1作为on条件
不允许更新吧
将, b.date1 = c.registe_date去掉试试
on (trunc(b.DATE1) = trunc(c.registe_date))
b.date1是用来作为b表和c表的连接条件的
这个字段应该是不允许进行更新的
你将when matched子句里的b.date1 = c.registe_date去掉,看看能否执行成功
MERGE INTO games_data b
using (select sub_id, game_name, registe_date, rn
from (select sub_id,
game_name,
a.registe_date,
row_number() over(partition by game_name, sub_id, trunc(registe_date) order by sub_id, registe_date) as rn
from game_user_details a
where trunc(registe_date) = trunc(sysdate))
where rn = 1) c
on (trunc(b.DATE1) = trunc(c.registe_date))
WHEN MATCHED THEN
update set b.site_id = c.sub_id
WHEN NOT MATCHED THEN
insert (site_id, date1) values (c.sub_id, c.registe_date)
对,只有在ORACLE 10I以上版本才完整支持MERGE INTU on 1WHEN MATCHED THEN updateset WHEN NOT MATCHED THEN insert ,,,