(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 (); }