gpt4 book ai didi

mysql - 导入mysql前检查数据

转载 作者:行者123 更新时间:2023-11-29 01:52:12 25 4
gpt4 key购买 nike

我有一个充满“业务”数据的表,以及一个通过导入进入的名为“表 9”的新表。我正在尝试将表 9 数据迁移到企业中,但我需要确保它不存在。我别无选择,只能直播(我有备份)

到目前为止,这是我的代码:

INSERT INTO businesses

(Business, Address1,Address2,Address3,Town,Postcode,BusinessType,Contact,Position,Telephone)

SELECT Company,

line1,

line2,

line3,

town,

postcode,

trade,

(SELECT CONCAT(`ContactSalutation`, ' ', `ContactFirstName`, ' ', `ContactLastName`) FROM telesales.`table 9`),

ContactPosition,

phoneno pnum

FROM telesales.`table 9` ts

where pnum NOT IN (SELECT DISTINCT Telephone

FROM businesses

WHERE Telephone = pnum)

首先,这是否符合我的预期?仅当表 9 中的电话号码不存在于业务表中时才插入,有没有办法说明它是否存在然后用新数据更新它?

最佳答案

首先,

(SELECT CONCAT(`ContactSalutation`, ' ', `ContactFirstName`, ' ', `ContactLastName`) FROM telesales.`table 9`),

几乎肯定不是您想要的。您是说“从表 9 中获取所有这些信息并将其放入企业”,而没有连接或 where 子句。不确定 MySQL 对此有何 react ,但最好的情况是你得到一个随机行,而不是与你插入的行相关联的行。我认为您想将其替换为:

CONCAT(`ContactSalutation`, ' ', `ContactFirstName`, ' ', `ContactLastName`),

其次,此查询高度依赖于电话号码的格式。这可能不是一个好主意,除非您可以保证格式一致。

例如“00 31 20 787 9000”和“00 31 207 87 9000”是同一个电话号码吗?

在这种情况下,我通常会在 table9 上创建一个额外的列(例如“businessID”),并编写查询来填充它。

例如:

update table9 t9
inner join businesses b
on b.phone = t9.phone
set businessID = b.businessID

意义查表;你可能会发现你需要做

update table9 t9
inner join businesses b
on b.phone = trim(t9.phone)
set businessID = b.businessID

最后,您可以将表 9 中的记录插入到 businessID 为空的企业中,并更新其他企业。

关于mysql - 导入mysql前检查数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38608758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com