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

首頁 > 學院 > 開發設計 > 正文

MySQL一次更新多條不同的記錄

2019-11-09 13:33:27
字體:
來源:轉載
供稿:網友


表tb_name:

MySQL> desc tb_name; +--------------+--------------+------+-----+---------+----------------+ | Field        | Type         | Null | Key | Default | Extra          | +--------------+--------------+------+-----+---------+----------------+ | id           | int(11)      | NO   | PRI | NULL    | auto_increment | | station      | int(11)      | NO   | MUL | NULL    |                | | seq          | int(11)      | NO   |     | NULL    |                | | meaning      | varchar(40)  | NO   |     |         |                | | data         | float        | NO   |     | 0       |                | | notes        | varchar(200) | NO   |     |         |                | | rectime      | datetime     | NO   |     | NULL    |                | +--------------+--------------+------+-----+---------+----------------+ 7 rows in set (0.00 sec)mysql> 

需求:同一時間update表tb_name多次,每條記錄的內容不相同

對于更新記錄,update語法不支持一次更新多條記錄,只能一條一條執行:

update tb_name set data = '111',rectime = '2017-01-02' where station = 'a' and seq = 1;update tb_name set data = '111',rectime = '2017-01-02' where station = 'a' and seq = 2;update tb_name set data = '111',rectime = '2017-01-02' where station = 'a' and seq = 3;

當update list非常大時,執行效率低。

解決方法:

1.給字段station,seq添加聯合唯一索引由于on dumplicate key update只認主鍵或唯一索引。我的表不是根據主鍵id去更新內容,因此采用唯一索引列。(station,seq)構成聯合唯一索引。

alter table tb_name add unique index (station,seq);

2.用insert into tb_name () values (),(),() on duplicate key update xx=xx,xx=xx;來一次性更新多條記錄

insert into tb_name (station,seq,data,rectime) values(10, 1, 0, '2017-01-17 08:17:09'), (10, 2, 0, '2017-01-17 08:17:09'),(10, 131, 0, '2017-01-17 08:17:09') on duplicate key update data=values(data),rectime=values(rectime)

on duplicate key update語法官方說明:http://docs.Oracle.com/cd/E17952_01/refman-5.1-en/insert-on-duplicate.html它會先執行插入操作,碰到有主鍵或唯一索引的列發生沖突時,對沖突的這一行,執行update操作,更新sql語句中指定的某幾列。如果所有的列都不沖突,此語法和簡單的insert into語法效果一樣。

on duplicate key update 語法的官方說明:http://docs.oracle.com/cd/E17952_01/refman-5.1-en/insert-on-duplicate.htmlreplace和insert所做的工作完全相同,區別是當碰到有主鍵或唯一索引的列發生沖突時,對沖突的這一行,在insert前會對這行數據執行delete操作。效果是這一行中沒有被指定的列會被更新成本列的默認值,如果所有的列都不沖突,此語法和簡單的inset into語法效果一樣。

max_allowed_packet參數的官方說明:http://docs.oracle.com/cd/E17952_01/refman-5.5-en/replication-features-max-allowed-packet.htmlmysql中沒有一次更新紀錄數的限制,但是有sql語句長度的限制。如果需要執行超長的sql語句,需要調整max_allowed_packet這個配置參數。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰镇市| 洛南县| 吉木乃县| 临安市| 怀仁县| 宁国市| 衡山县| 隆德县| 郎溪县| 溧水县| 韶山市| 西林县| 旬邑县| 长泰县| 沙雅县| 左云县| 抚松县| 涞水县| 托克逊县| 阿瓦提县| 景德镇市| 华池县| 莆田市| 施甸县| 方正县| 儋州市| 化州市| 盐池县| 汉川市| 天长市| 饶阳县| 紫阳县| 肃南| 台山市| 鸡西市| 宜宾市| 达拉特旗| 洪江市| 当雄县| 武乡县| 岗巴县|