MySQL 中實現資料的批量修改

來源:互聯網
上載者:User

標籤:php批次更新;update;

今天遇到一個資料的批次更新,查了一下官方文檔,還好找到了。英文東東,大家耐心哈

http://dev.mysql.com/doc/refman/5.7/en/update.html

一般在使用資料編輯的時候:

  

UPDATE tablename SET field_1=‘value‘, field_2=‘value‘[...] WHERE condition_field= ‘value‘

或者 

UPDATE tablename SET field_1=‘value‘, [field_2...] where condition_field in (‘values‘)


如果更新多條資料為不同的值,怎麼做呢?

可能大部分人會這麼寫:

foreach($conditions as $field => $value){    $sql = "UPDATE tablename SET field = $value WHERE id = $id";    mysql_query($sql);}

這樣進行一條一條資料進行更新,這樣的效率比較低。

有沒有一條sql來進行操作的呢?其實mysql並沒有提供直接的方法來操作,大家可以看靠一下官方文檔,不過是英文的仔細看一下哦

(官方文檔:http://dev.mysql.com/doc/refman/5.7/en/update.html)

UPDATE tablename SET     field = CASE id        WHERE 1 THEN ‘value‘        WHERE 2 THEN ‘value‘    ENDWHERE id in (1,2,3)

更新多個欄位呢?

UPDATE tablename SET     field_1 = CASE id        WHERE 1 THEN ‘value‘        WHERE 2 THEN ‘value‘    END,    field_2 = CASE id        WHERE 1 THEN ‘value‘,        WHERE 2 THEN ‘value‘    ENDWHERE id in (1,2,3)

思路大致就是這樣的,如果是PHP那麼可以參考一下寫的方法:

/** * 批次更新資料,必須是二位元組 * * @param array $data 需要跟新的資料 * 比如:$data[‘欄位名稱‘][‘主鍵ID‘]=>‘value‘ * * @return boolean */public function updateAll($data, $dbname) {if (empty($data)) {return false;}$sql = "UPDATE ".$dbname." SET ";$total = count($data);$i = 1;$idsArr = array();foreach ($data as $field => $val) {$sql .= " $field = CASE id ";foreach ($val as $id => $v) {$sql .= sprintf(" WHEN %d THEN ‘%s‘ ", $id, $v);if (!in_array($id, $idsArr)) {$idsArr[] = $id;}}if ($i == $total) {$sql .=" END ";} else {$sql .=" END, ";}$i++;}$ids = implode(‘,‘, $idsArr);$sql .= " WHERE id IN ($ids)";//TODO 具體執行的方法就自己寫了( ̄▽ ̄)" }

本文出自 “追夢” 部落格,請務必保留此出處http://dreameng.blog.51cto.com/1187899/1746917

MySQL 中實現資料的批量修改

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.