MySQL经常使用语句笔记

(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 ();
	}
相关文章
相关标签/搜索