mysql的insert for update用法
阿新 • • 發佈:2019-01-27
好久沒寫部落格了,洗完澡一時興起,小寫一篇記錄sql知識點吧。
由於之前公司業務的變更,需要做一個歷史資料表資料遷移到新建的資料表中,剛被分配到這個任務時,馬上開啟歷史資料表的相關結構,一看懵逼了。需求大概是把原來的幾百張資料庫表(裡面大概有三四類表,由於資料量太大,都進行一定規則的分表)遷移到新建的資料庫表(也是採用一定規則分表)。
第一階段,採用insert語法批量新增資料。
由於資料表資料量太大了,業務變更也比較複雜,所以採用指令碼形式實現資料遷移。
第二階段,這是重點,採用 insert for update用法
原因是由於新表的某些列並不能在插入的時候直接拼接,由於後面再進行更新。一開始使用常規方法,一條條進行
示例,資料表為test,資料如下:
id | a | b |
1 | a是1 | b是1 |
2 | a是2 | b是2 |
現在批量更新id為1的a列資料為“a是11”,id為2的a列資料為“a是22”。
執行的sql為
# INSERT INTO test VALUES(1,’a是11’,’b是1’),(2,’a是22’,’b是2’) ON DUPLICATE KEY UPDATE a=VALUES(a),;
總結:mysql中的”insert into tablename values() on duplicate key update columnName = valueName;” 用於批量更新資料庫表的列資料是比較適用的。