如何解决在oracle或equiv中进行重复密钥更新定义密钥/列?
我有下面的工作insert
语句,实际上,我是通过循环将来自上传的 .csv 文件的列数据映射到下面的VALUES
变量中。
一切正常,除非现在我只是尝试添加一个调整INSERT
或UPDATE
-如果'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 举报,一经查实,本站将立刻删除。