• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MYSQL 之 on duplicate key update

mysql 搞代码 4年前 (2022-01-09) 21次浏览 已收录 0个评论

需求: 假如有一张书目表,字段为id,name,count(库存) 现要插入一条新纪录,如果数据库没有这条纪录,插入 若已经存在,则更新库存。 解决方法:mysql 的 on duplicate key update 语法。 下面给出解决过程。 创建测试数据库 mysql CREATE DATABASE本文来源gaodai$ma#com搞$$代**码)网@ `tes

需求:

假如有一张书目表,字段为id,name,count(库存)

现要插入一条新纪录,如果数据库没有这条纪录,插入

若已经存在,则更新库存。

解决方法:mysql 的 on duplicate key update 语法。

下面给出解决过程。

创建测试数据库

mysql> CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Query OK, 1 row affected (0.14 sec)

mysql> use test;
Database changed

创建测试数据表

mysql> CREATE TABLE IF NOT EXISTS `books` (
-> `id` int(10) unsigned not null auto_increment,
-> `name` varchar(50) not null,
-> `count` smallint(5) unsigned not null default ‘0’,
-> primary key(`id`),
-> unique key(`name`)
-> ) ENGINE=INNODB DEFAULT CHARSET=utf8 ;
Query OK, 0 rows affected (0.79 sec)

查看索引信息

mysql> show index from books;
+——-+————+———-+————–+————-+———–+————-+———-| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+——-+————+———-+————–+————-+———–+————-+———-+——–+——+————+———+
| books | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | |
| books | 0 | name | 1 | name | A | 0 | NULL | NULL | | BTREE | |
+——-+————+———-+————–+————-+———–+————-+———-2 rows in set (0.00 sec)

插入第一条测试数据

mysql> INSERT INTO `books` VALUES (”,’windows’,5);
Query OK, 1 row affected, 1 warning (0.04 sec)

查看数据

mysql> select * from books;
+—-+———+——-+
| id | name | count |
+—-+———+——-+
| 1 | windows | 5 |
+—-+———+——-+
1 row in set (0.00 sec)

再次插入windows这本书

mysql> INSERT INTO `books` VALUES (”,’windows’,1)
-> ON DUPLICATE KEY UPDATE `count` = `count` + VALUES(`COUNT`);
Query OK, 2 rows affected, 1 warning (0.12 sec)

再来查看数据

mysql> select * from books;
+—-+———+——-+
| id | name | count |
+—-+———+——-+
| 1 | windows | 6 |
+—-+———+——-+
1 row in set (0.00 sec)


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MYSQL 之 on duplicate key update

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址