国产探花免费观看_亚洲丰满少妇自慰呻吟_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這個配置參數。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 济阳县| 开封市| 彩票| 陆良县| 玛沁县| 尼勒克县| 安吉县| 彰武县| 陆良县| 东宁县| 茂名市| 泸水县| 台东县| 宝坻区| 天台县| 合山市| 珠海市| 田林县| 民乐县| 香格里拉县| 临海市| 平定县| 区。| 广宁县| 延川县| 开封市| 安化县| 二连浩特市| 闽侯县| 乌鲁木齐县| 东港市| 新竹县| 北安市| 银川市| 巴青县| 东台市| 波密县| 容城县| 利辛县| 华容县| 堆龙德庆县|