Mysql语法
本文为博主原创,转载请注明出处
ON DUPLICATE KEY UPDATE
使用情况:
当我们要向数据库中插入一条数据时,我们需要保证主键的唯一性。
如果插入的数据主键不重复,那么就插入;如果主键已存在(重复),那么就执行update之后的语句。
使用方法:
单句使用 | 多句使用方法 |
---|---|
insert into 表名 values() on duplicate key update key=key+1 | insert into 表名 values() on duplicate key update key=key+1,updatetime=now() |
测试表结构
如图,这是一个名为buyer的表,以下为几个字段,我们仅作测试使用。
单句使用
接下来我们来看一下具体操作及数据变化,主要以图片说明:
表中数据仅有一条,接下来我们执行语句。为保证sql效率,我们还是使用标准写法,列出字段名。
Insert into buyer(buyer_id,buyer_sex,buyer_name,buyer_address)
VALUES(2,'女','Alice','testaddress2')
ON DUPLICATE KEY UPDATE buyer_id=buyer_id+1
运行结果如下:
可以看到:由于没有buyer_id(主键)为2的记录,所以插入一条记录,现在我们再执行一次这条语句看一下。
可以看到:由于语句已经存在,转为执行update之后的的sql。
多句使用(直接加逗号)
SQL语句,我们在update后添加性别的修改。
Insert into buyer(buyer_id,buyer_sex,buyer_name,buyer_address)
VALUES(3,'女','Alice','testaddress2')
ON DUPLICATE KEY UPDATE buyer_id=buyer_id+1,buyer_sex='无'
运行结果如下:
update后两条语句同时发生了修改。