发布网友 发布时间:2022-04-10 08:22
共5个回答
懂视网 时间:2022-04-10 12:43
insert ignore into table
保持原记录,忽略新插入的记录
2.替换
replace into table
替换原记录,即先删除原记录,再插入新的记录
insert into table value("xx","xx") ON DUPLICATE KEY UPDATE
其实这个是原本需要执行3条SQL语句(SELECT,INSERT,UPDATE),缩减为1条语句即可完成。
即
IF (SELECT * FROM where 存在) {
UPDATE SET WHERE ;
} else {
INSERT INTO;
}
如:
mysql> insert into Tble values (1,‘xxx‘,‘xxx‘) ON DUPLICATE KEY UPDATE status =‘drain‘;
Query OK, 2 rows affected (0.00 sec)
上面语句伪代码表示即为
if (select * from table where id=1) {
update device set status =‘drain‘ where id=1
} else {
insert into table value (1,‘xxx‘,‘xxx‘)
}
很明显,id=1 是有的,这样就执行update操作
mysql> select * from table;
+-------+--------+-----------+
| id| status | spec_char |
+-------+--------+-----------+
| 1 | drain | yangting |
| 2 | dead | zhong |
+-------+--------+-----------+
2 rows in set (0.00 sec)
sql解决主键冲突
标签:else strong dev sql col span word round int
热心网友 时间:2022-04-10 09:51
这矛盾呢。热心网友 时间:2022-04-10 11:09
先把主键drop掉alter table books drop constraint pk_books_bookid ;热心网友 时间:2022-04-10 12:44
晕啊、、这个问题我晕。。既然你想设为有重复的。那你该列就不能作为主键,sql中主键的定义你好好看看。不然,你有重复的这个列,你绝对是设成主键的。。热心网友 时间:2022-04-10 14:35
删除约束