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 ();
	}
相關文章
相關標籤/搜索