gpt4 book ai didi

mysql - 当两个表字段在 MySQL 中具有相同的值时,如何忽略将记录从一个表插入另一个表?

转载 作者:可可西里 更新时间:2023-11-01 07:33:02 24 4
gpt4 key购买 nike

我有 2 个表,其中包含姓名和电子邮件。现在我想将这些表合并成一个没有重复记录的新表。我想使用电子邮件字段来避免两个表中的重复值。我听说 INSERT IGNORE 查询用于在不影响现有记录的情况下将值插入表中。如何编写 INSERT IGNORE 查询来检查电子邮件字段以进行重复检查。如果有人知道其他方法也欢迎。

table1:
fid fname email
--- ----- -----
1 Balaji balaji@email.com
2 xxxxx xxxxx@email.com
3 Bala bala@email.com

table2:

gid gname gemail
--- ----- ------
1 Bala bala@email.com
2 vinoth vinoth@email.com

预期结果:

table3:
-------
id name email
-- ---- -----
1 Balaji balaji@email.com
2 xxxxx xxxxx@email.com
3 Bala bala@email.com
4 vinoth vinoth@email.com

最佳答案

MySQL 支持 UPDATE ON DUPLICATE KEY 但为了工作,您需要在要插入的表上添加 unique 约束。

假设 Table3 是您的新表的名称。您需要先添加约束,

ALTER TABLE Table3 ADD CONSTRAINT tb_uq UNIQUE (name, email)

现在您可以在新表上拥有唯一的记录,以合并以前的表,

INSERT INTO table3(name, email)
SELECT name, email
FROM
(
SELECT fid id, fname name, email FROM Table1
UNION ALL
SELECT gid id, gname name, gemail email FROM Table1
) s
ON DUPLICATE KEY UPDATE name = VALUES(name);

不使用 ON DUPLICATE KEY UPDATE 的替代解决方案。是使用UNION(without ALL)并假设Table3.ID设置为自增

INSERT INTO table3(name, email)
SELECT name, email
FROM
(
SELECT fname name, email FROM Table1
UNION
SELECT gname name, gemail email FROM Table2
) s

关于mysql - 当两个表字段在 MySQL 中具有相同的值时,如何忽略将记录从一个表插入另一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17289671/

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