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

img


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

这是一个简单的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语句等。