`
JadeLuo
  • 浏览: 425757 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

mysql on DUPLICATE KEY UPDATE test1.name=test2.name;

 
阅读更多
mysql> create table test1(id int,name varchar(5),type int,primary key(id));
Query OK, 0 rows affected (0.01 sec)
mys
mysql> create table test2(id int,name varchar(5),type int,primary key(id));
Query OK, 0 rows affected (0.01 sec)


mysql> select * from test1;
+-----+------+------+
| id  | name | type |
+-----+------+------+
| 101 | aaa  |    1 | 
| 102 | bbb  |    2 | 
| 103 | ccc  |    3 | 
+-----+------+------+
3 rows in set (0.00 sec)

mysql> select * from test2;
+-----+------+------+
| id  | name | type |
+-----+------+------+
| 201 | aaa  |    1 | 
| 202 | bbb  |    2 | 
| 203 | ccc  |    3 | 
| 101 | xxx  |    5 | 
+-----+------+------+
4 rows in set (0.00 sec)

发现重复的是更新操作。在原有记录基础上,更新指定字段内容,其它字段内容保留。例如我只想插入test2表的id,name字段,但是要保留test1表的type字段:
mysql> insert into test1(id,name,type)(select id,name,type from test2) on DUPLICATE KEY UPDATE test1.name=test2.name;
Query OK, 5 rows affected (0.04 sec)
Records: 4  Duplicates: 1  Warnings: 0

mysql> select * from test1;
+-----+------+------+
| id  | name | type |
+-----+------+------+
| 101 | xxx  |    1 | 
| 102 | bbb  |    2 | 
| 103 | ccc  |    3 | 
| 203 | ccc  |    3 | 
| 202 | bbb  |    2 | 
| 201 | aaa  |    1 | 
+-----+------+------+
6 rows in set (0.00 sec)

 

分享到:
评论

相关推荐

    mysql 中 replace into 与 insert into on duplicate key update 的用法和不同点实例分析

    - 在示例中,`INSERT INTO test (id, name) VALUES(2, 'bb') ON DUPLICATE KEY UPDATE name = VALUES(name)` 尝试插入记录,由于 ID=2 的记录存在,它不删除记录,而是将 name 字段更新为 'bb',而 addr 字段保持...

    mysql 批量更新及效率对比.docx

    `INSERT INTO tbl_name (col_name1, col_name2, ...) VALUES (col_value1, col_value2, ...), (col_value1, col_value2, ...) ON DUPLICATE KEY UPDATE userName = VALUES(userName), userID = VALUES(userID);...

    MYSQL插入处理重复键值的几种方法

    例如,如果我们只想插入`test2`的`id`和`name`,但保留`test1`的`type`,可以使用以下命令:`insert into test1(id,name,type)(select id,name,type from test2) on DUPLICATE KEY UPDATE test1.name=test2.name;...

    mysql如果数据不存在,则插入新数据,否则更新的实现方法

    INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...) ON DUPLICATE KEY UPDATE column1 = value1, column2 = value2, ...; ``` Insert Into 语句会先尝试插入新数据,如果表中已经存在...

    达梦数据库与mysql差异性语法

    达梦数据库与mysql差异性语法 达梦数据库是一种关系...ON DUPLICATE KEY UPDATE column1 = value1; ``` 达梦数据库与MySQL之间存在许多差异性语法,开发者需要了解这些差异性以便更好地使用这两种数据库管理系统。

    MySql避免重复插入记录的几种方法

    ON DUPLICATE KEY UPDATE `c`=`c`+1; ``` 这意味着如果 `a` 的值已经存在,`c` 的值将增加 1,而不是插入新的记录。这与 `UPDATE` 语句的效果是一样的,只是在冲突发生时才执行更新。 ```sql UPDATE `table` ...

    ibatis 批量 增删改查

    3. 考虑数据库的特性,如MySQL的`ON DUPLICATE KEY UPDATE`或Oracle的`BULK COLLECT INTO`。 在Ibatis中,批量操作提供了更高效、更灵活的方式处理大量数据。理解并熟练应用这些技巧,能显著提升应用程序的性能和可...

    防止mysql重复插入记录的方法

    INSERT INTO `table` (`a`, `b`, `c`) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE `c`=`c`+1; ``` 如果`a`字段的值1已经存在,那么`c`字段的值会增加1,而不是插入新的记录。 在PHP中处理这个问题,你可以在...

    MySQL自增长键理解

    另外,如果需要在已存在的数据基础上插入新记录,可以考虑使用`INSERT IGNORE`或`ON DUPLICATE KEY UPDATE`语句,以防止重复的键值冲突。 总的来说,MySQL的自增长键是数据库设计中的一个重要工具,它提供了方便的...

    Mysql中replace与replace into的用法讲解

    而 `REPLACE` 的效率相比 `INSERT IGNORE` 或 `INSERT ON DUPLICATE KEY UPDATE` 在某些情况下可能会更高,因为它不需要检查每一行是否存在冲突,而是直接进行替换。 总结来说,`REPLACE` 和 `REPLACE INTO` 是...

Global site tag (gtag.js) - Google Analytics