微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在oracle或equiv中进行重复密钥更新定义密钥/列?

如何解决在oracle或equiv中进行重复密钥更新定义密钥/列?

我有下面的工作insert语句,实际上,我是通过循环将来自上传 .csv 文件的列数据映射到下面的VALUES变量中。

一切正常,除非现在我只是尝试添加一个调整INSERTUPDATE-如果'app_id'的第一个是找到的在上载的.csv中,找到了 ie 重复项-只需更新已标识的重复项行即可。

根据一些ON DUPLICATE KEY UPDATE的研究方法,但是我不知道如何/在哪里定义密钥?-您可以在下面看到我尝试添加{{ 1}}到查询末尾再输入我的变量,但是我很确定这是不正确的。

ON DUPLICATE KEY UPDATE

注意:上面的“插入”工作正常,减去了我下面的尝试添加

$sql = "INSERT INTO app.also_data (app_id,fac_ident,lg_name,basic_tp,catc_vd,address,assoc_city,latitude,longitude,assoc_cnty,assoc_st,time_zone,dd_reg,ato_sa,ato_td,fema_reg,ops_hrs,prim_ph,atc_level,tower_type,manager,sat_phone_num,td_mgr,to_dist,tod_mgr,stof_fac,ops_status,crt_rl,created_user,date)
                      VALUES ('${data[0]}','${data[1]}','${data[2]}','${data[3]}','${data[4]}','${data[5]}','${data[6]}','${data[7]}','${data[8]}','${data[9]}','${data[10]}','${data[11]}','${data[12]}','${data[13]}','${data[14]}','${data[15]}','${data[16]}','${data[17]}','${data[18]}','${data[19]}','${data[20]}','${data[21]}','${data[22]}','${data[23]}','${data[24]}','${data[25]}','${data[26]}','${data[27]}','${data[28]}','${data[29]}') ON DUPLICATE KEY UPDATE ('${data[0]}','${data[29]}')";

那么如何正确地基于列... ON DUPLICATE KEY UPDATE ('${data[0]}','${data[29]}')"; 添加ON DUPLICATE KEY UPDATE-如果在app_id中发现重复的app_id值,而只是insert呢?

解决方法

ON DUPLICATE KEY在Oracle中不是问题。最接近的等价词是MERGE语法。这是一个有关如何在您的用例中使用它的示例(为了便于阅读,我减少了列数):

merge into app.also_data a
using (select ? app_id,? fac_ident,? lg_name,? basic_tp from dual) p
on (a.app_id = p.app_id)
when matched then 
    update set 
        a.fac_ident = p.fac_ident,a.lg_name = p.lg_name,a.basic_tp = p.basic_tp
when not matched then 
    insert(app_id,fac_ident,lg_name,basic_tp) 
    values(p.app_id,p.fac_ident,p.lg_name,p.basic_tp)
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。