gpt4 book ai didi

php - 使用 MySQL 查询更新两个表字段值

转载 作者:行者123 更新时间:2023-11-29 21:50:57 25 4
gpt4 key购买 nike

我有两个 MySQL 表,其中包含类似的值

表1

id  email_id  
===========
1 abc@xyz.com
2 bbc@xy.com
3 gty@xyz.com
4 iut@xyz.com
5 tyk@xy.com

表2

id  name email_id  
===========
1 abc abc@xy.com
2 bbc bbc@xy.com
3 gty gty@xy.com
4 iut iut@xy.com
5 tyk tyk@xy.com
6 tyr tyr@xy.com
7 iut iut@xy.com

结果

表2

id  name email_id  
===========
1 abc abc@xyz.com
2 bbc bbc@xy.com
3 gty gty@xyz.com
4 iut iut@xyz.com
5 tyk tyk@xy.com
6 tyr tyr@xy.com
7 iut iut@xyz.com

您可以在我的第一个表中看到@xy.com 和@xyz.com 的组合。所以我需要将表2中的所有@xy.com更改为@xyz.com,无论表1是否相同@xyz.com。

示例:表1中的case1- abc@xyz.com可用且其@xyz格式,因此在表2中我需要将其更改为abc@xyz.com

表1中的case2- bbc@xy.com可用并且采用@xy格式,因此在表2中我不需要更改bbc@xyz.com。我可以保持原样。
我想你理解我的问题,请给我一个 mysql 查询来解决它。提前致谢

最佳答案

您可以将 table1table2 连接在一起,然后比较每个 id 的电子邮件地址的长度。由于您希望有条件地将 @xy 格式替换为 @xyz 格式,因此您只需选择要在查询中保留的较长电子邮件地址即可.

SELECT t2.id, t2.name,
CASE WHEN CHAR_LENGTH(t2.email_id) > CHAR_LENGTH(COALESCE(t1.email_id, ''))
THEN t2.email_id ELSE t1.email_id END AS email_id
FROM table2 t2 LEFT JOIN table1 t1 ON t2.id = t1.id

关于php - 使用 MySQL 查询更新两个表字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33646140/

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