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)
相关推荐
- 在示例中,`INSERT INTO test (id, name) VALUES(2, 'bb') ON DUPLICATE KEY UPDATE name = VALUES(name)` 尝试插入记录,由于 ID=2 的记录存在,它不删除记录,而是将 name 字段更新为 'bb',而 addr 字段保持...
`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);...
例如,如果我们只想插入`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;...
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...) ON DUPLICATE KEY UPDATE column1 = value1, column2 = value2, ...; ``` Insert Into 语句会先尝试插入新数据,如果表中已经存在...
达梦数据库与mysql差异性语法 达梦数据库是一种关系...ON DUPLICATE KEY UPDATE column1 = value1; ``` 达梦数据库与MySQL之间存在许多差异性语法,开发者需要了解这些差异性以便更好地使用这两种数据库管理系统。
ON DUPLICATE KEY UPDATE `c`=`c`+1; ``` 这意味着如果 `a` 的值已经存在,`c` 的值将增加 1,而不是插入新的记录。这与 `UPDATE` 语句的效果是一样的,只是在冲突发生时才执行更新。 ```sql UPDATE `table` ...
3. 考虑数据库的特性,如MySQL的`ON DUPLICATE KEY UPDATE`或Oracle的`BULK COLLECT INTO`。 在Ibatis中,批量操作提供了更高效、更灵活的方式处理大量数据。理解并熟练应用这些技巧,能显著提升应用程序的性能和可...
INSERT INTO `table` (`a`, `b`, `c`) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE `c`=`c`+1; ``` 如果`a`字段的值1已经存在,那么`c`字段的值会增加1,而不是插入新的记录。 在PHP中处理这个问题,你可以在...
另外,如果需要在已存在的数据基础上插入新记录,可以考虑使用`INSERT IGNORE`或`ON DUPLICATE KEY UPDATE`语句,以防止重复的键值冲突。 总的来说,MySQL的自增长键是数据库设计中的一个重要工具,它提供了方便的...
而 `REPLACE` 的效率相比 `INSERT IGNORE` 或 `INSERT ON DUPLICATE KEY UPDATE` 在某些情况下可能会更高,因为它不需要检查每一行是否存在冲突,而是直接进行替换。 总结来说,`REPLACE` 和 `REPLACE INTO` 是...