㊣ 专心致志 2019-10-14 17:26 采纳率: 0%
浏览 395
已结题

修改MYSQL数据库函数里插入新数据更改插入条件

片段代码如下:

IF substring(tmptext1,z,1)<>CHAR(13) AND POSITION('"' IN substring(tmptext1,z,1))<1 AND POSITION('"' IN substring(tmptext1,j,1))<1
AND POSITION(',' IN substring(tmptext1,z,1))<1 AND POSITION(',' IN substring(tmptext1,j,1))<1
AND POSITION(')' IN substring(tmptext1,z,1))<1 AND POSITION(')' IN substring(tmptext1,j,1))<1 THEN
SET @createsql = CONCAT("INSERT ignore INTO " , targettable , "(firstname,secondname,id)VALUES('",substring(tmptext1,j,1),"','",substring(tmptext1,z,1),"','",tid,"')");
PREPARE stmt from @createsql;
EXECUTE stmt;

现在的是默认插入一行数据,我想修改为firstname,secondname(两个字段集合唯一索引)字段相同的话,id追加到现在的id字段,两个ID之间加个逗号分隔。
图片说明

目前插入结果是这样的三列,可以看得出firstname和secondname字段多个都是重复的,如“动故”,“动神”,“动明”是重复出现,我想要达到的效果是:
图片说明
也就是“动故”出现一次了,不需要再插入一条数据,只需要更改ID字段就可以,ID字段我设置了最长字符限制,也就是插入10次后就插入不进去数据了,插入语句里添加了ignore,插入不进去也不会报错是不是这样,谢谢。

图片说明
字段我已经设置为唯一索引,需要还需要补充什么资料,我再添加,谢谢。

问题解决方法参考内容(有内容我也没看明白,大致就是这个意思)
https://www.cnblogs.com/kzfbk/p/7780950.html

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-10-14 18:33
    关注

    key存在则更新,不存在则插入
    insert into .... on duplicate key update
    对于需要根据原记录进行操作的.如表中icount字段用于计数,当没有记录时,插入的value为0,当有记录时,value需要更新为value+1,这时replace就不能完成这个功能.使用insert则可以,其基本语法是insert into ... on duplicate key update...,如上述语句为
    insert into t_test set ikey=1,value='a',value2=1 on duplicate key update value2=value2+1;

    你字符串不是直接相加,而是加上逗号,但是思路和这个一样

    https://www.jb51.net/article/28885.htm

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器