当两个表字段在MySQL中具有相同的值时,如何忽略将表中的记录插入到另一个表中?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了当两个表字段在MySQL中具有相同的值时,如何忽略将表中的记录插入到另一个表中?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1428字,纯文字阅读大概需要3分钟。
内容图文
![当两个表字段在MySQL中具有相同的值时,如何忽略将表中的记录插入到另一个表中?](/upload/InfoBanner/zyjiaocheng/906/61ee77f494f64a69b4447ebc43cd042b.jpg)
我有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,但为了工作,您需要在要插入的表上添加唯一约束.
假设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);
> SQLFiddle Demo
> INSERT … ON DUPLICATE KEY UPDATE Syntax
不使用ON DUPLICATE KEY UPDATE的替代解决方案.是使用UNION(没有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中具有相同的值时,如何忽略将表中的记录插入到另一个表中?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。