(1)mysql語句:批量更新多條記錄的不一樣值mysql
UPDATE
categories
SET
display_order =
CASE
id
WHEN
1
THEN
3
WHEN
2
THEN
4
WHEN
3
THEN
5
END
,
title =
CASE
id
WHEN
1
THEN
'New Title 1'
WHEN
2
THEN
'New Title 2'
WHEN
3
THEN
'New Title 3'
END
WHERE
id
IN
(1,2,3)
這句sql的意思是,更新display_order 字段,若是id=1 則display_order 的值爲3,若是id=2 則 display_order 的值爲4,若是id=3 則 display_order 的值爲5。
便是將條件語句寫在了一塊兒。
這裏的where部分不影響代碼的執行,可是會提升sql執行的效率。確保sql語句僅執行須要修改的行數,這裏只有3條數據進行更新,而where子句確保只有3行數據執行。sql
以PHP爲例,批量更新不一樣Id對應的name值:spa
function update($details) { $pdo = parent::$pdo; $ids = array (); $sql = "UPDATE course_template_detail SET name = CASE id "; foreach ( $details as $detail ) { $ids [] = $detail->id; $sql .= sprintf ( "WHEN %d THEN '%s' ", $detail->id, $detail->name ); } $ids = implode ( ',', $ids ); $sql .= "END WHERE id IN ($ids)"; $stmt = $pdo->prepare ( $sql ); $stmt->execute (); }