mysql - SQL 将列从一个表复制到另一个表中 - 唯一

标签 mysql sql

基本上,我必须从特定表中复制 2 列并将它们添加到另一个表中。我可以这样做:

Insert into biz_ctx_rule (from_biz_ctx_id, top_level_bie_id)
    select distinct biz_ctx_id, owner_top_level_abie_id
    FROM abie;

我收到以下错误:

Error Code: 1062. Duplicate entry '20-52' for key 'biz_ctx_rule_unicity'

问题是我在 (from_biz_ctx_id, top_level_bie_id) 上添加了唯一性约束。 有没有一种简单的方法可以使用 UNIQUE() 来做到这一点,或者我必须尝试一些连接?

谢谢。

最佳答案

如果问题是插入重复项,则使用重复键更新:

Insert into biz_ctx_rule (from_biz_ctx_id, top_level_bie_id)
    select distinct biz_ctx_id, owner_top_level_abie_id
    from abie
    on duplicate key update from_biz_ctx_id = values(from_biz_ctx_id);

更新基本上是一个空操作,但它可以防止返回错误,因此插入会成功。

关于mysql - SQL 将列从一个表复制到另一个表中 - 唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57959380/

相关文章:

PHP 和 MySQL - 加载数据本地问题

mysql - 使用 Doctrine 在 Symfony 中获取相似实体

php - 如果没有找到行,MySQL make count 不返回任何内容

sql - 如何从 VB.NET 中的存储过程中获取返回值

MySql COUNT(*) 在存储过程中不同

mysql - 新建一个只有年月的索引列VS直接索引datetime/timestamp列

java - crate 常见爬行示例不起作用

SQL检测行的变化

mysql - 使用SQL比较不同表之间的数据

mysql - 如何使用 SQL 删除给定表中的冗余记录