国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

insert into … on duplicate key update / replace into 多行數據介紹

2024-07-24 12:48:02
字體:
來源:轉載
供稿:網友

場景是這樣的,我有KV型的表,建表語句如下:

復制代碼 代碼如下:

CREATE TABLE `dkv` (
  `k1` int(11) NOT NULL DEFAULT '0',
  `k2` int(11) NOT NULL DEFAULT '0',
  `val` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`k1`,`k2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

數據大概是這樣的:

+----+----+-----------+
| k1 | k2 | val       |
+----+----+-----------+
|  1 |  1 | value 1-1 |
|  1 |  2 | value 1-1 |
|  1 |  3 | value 1-1 |
|  1 |  5 | value 1-1 |
|  1 |  7 | value 1-1 |
+----+----+-----------+

當我插入一條數據時,我要判斷(k1,k2)是否已經存在(1條selete),若存在就update,不存在就insert,這是一個典型的merge過程,雖然按照PK執行操作的速度非常快,但是畢竟SQL交互量上去了,如果我有100筆這樣的SQL,那這個開銷是很可觀的,有沒有什么一條SQL就能搞定的事情呢?

有兩種寫法:

第一種: insert into … on duplicate key update

復制代碼 代碼如下:

insert DELAYED into dkv 
values
(1,2,'new 12a'),
(1,3,'new 33ba'),
(1,4,'new 23222'),
(1,6,'new 12333'),
(1,8,'new vaaaa'),
(1,20,'new vaff'),
(1,25,'new vaff')
ON DUPLICATE KEY UPDATE val=VALUES(val);

第二種 replace into:

復制代碼 代碼如下:

replace into dkv 
values
(1,2,'new 12a'),
(1,3,'new 33ba'),
(1,4,'new 23222'),
(1,6,'new 12333'),
(1,8,'new vaaaa'),
(1,20,'new vaff'),
(1,25,'new vaff');

最終都能將數據改成這樣:

復制代碼 代碼如下:

+----+----+-----------+
| k1 | k2 | val       |
+----+----+-----------+
|  1 |  1 | value 1-1 |
|  1 |  2 | new 12a   |
|  1 |  3 | new 33ba  |
|  1 |  4 | new 23222 |
|  1 |  5 | value 1-1 |
|  1 |  6 | new 12333 |
|  1 |  7 | value 1-1 |
|  1 |  8 | new vaaaa |
|  1 | 20 | new vaff  |
|  1 | 25 | new vaff  |
+----+----+-----------+

您可能感興趣的文章:

INSERT INTO .. ON DUPLICATE KEY更新多行記錄深入mysql "ON DUPLICATE KEY UPDATE" 語法的分析Mysql中Insert into xxx on duplicate key update問題mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''mysql error:#1062 Duplicate entry ‘***′ for key 1問題解決方法mysql insert的幾點操作(DELAYED,IGNORE,ON DUPLICATE KEY UPDATE )
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灵川县| 洪雅县| 灌云县| 龙泉市| 望奎县| 上虞市| 陇川县| 邢台县| 澳门| 黎川县| 西乌珠穆沁旗| 永吉县| 靖宇县| 临清市| 镇安县| 长垣县| 西乡县| 吉安县| 商丘市| 湘潭市| 汶川县| 珠海市| 延庆县| 甘肃省| 根河市| 观塘区| 桑日县| 东莞市| 游戏| 介休市| 沂源县| 京山县| 清水河县| 房产| 浙江省| 巴林右旗| 防城港市| 泌阳县| 恩施市| 疏附县| 南安市|