咕噜咕噜502 2023-05-23 17:44 采纳率: 56.6%
浏览 21
已结题

mysql怎么将一张表中的数据,通过条件判断新增到其他多张表中?

img


card_info表中有这些数据,其中,comp_name字段对应comp表中的name字段,comb_name对应comb表中的name字段,person_name到address这些字段对应person表中相应字段,org_name对应org表中的相应字段,需求是怎么将card_info表中对应列段的数据拆分出来新增到对应的表中,并且除了person表,其他三张表如果对应name存在了就不新增。可以不用一条语句完成,可以多条!

  • 写回答

1条回答 默认 最新

  • 冰点. 全栈领域优质创作者 2023-05-23 17:55
    关注

    这是一个简单的SQL 啊,还是要好好学习,我写个示例给你
    可以通过使用INSERT INTO SELECT语句和WHERE子句来将数据从card_info表复制到其他表中,并根据条件进行判断。以下是一种可能的解决方案:

    1. 将数据插入comp表:
    INSERT INTO comp (name)
    SELECT DISTINCT comp_name
    FROM card_info
    WHERE comp_name NOT IN (SELECT name FROM comp);
    

    这将从card_info表中选取不重复的comp_name,并将其插入到comp表中。WHERE子句将确保不会插入已经存在的name值。

    1. 将数据插入comb表:
    INSERT INTO comb (name)
    SELECT DISTINCT comb_name
    FROM card_info
    WHERE comb_name NOT IN (SELECT name FROM comb);
    

    与上面的操作类似,将不重复的comb_name插入到comb表中,WHERE子句确保不会插入已经存在的name值。

    1. 将数据插入org表:
    INSERT INTO org (name)
    SELECT DISTINCT org_name
    FROM card_info
    WHERE org_name NOT IN (SELECT name FROM org);
    

    将不重复的org_name插入到org表中并确保没有插入重复的name值。

    1. 将数据插入person表:
    INSERTINTO person (name, address, phone, email)
    SELECT DISTINCT person_name, address, phone, email
    FROM card_info
    WHERE person_name NOT IN (SELECT name FROM person);
    

    将不重复的person_name、address、phone和email值插入到person表中,并确保没有插入重复的name值。

    使用了NOT IN子句来避免插入重复的值。但是,对于大量数据和重复值较多的情况,这种方法可能会影响性能。可以考虑使用其他更高效的方法,例如使用临时表或使用MERGE语句等。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月25日
  • 修改了问题 5月23日
  • 创建了问题 5月23日

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音