•第一种:IF--THEN语句结合 复制代码 代码如下: UPDATE mytable SET myfield = CASE other_field WHEN 1 THEN "value" WHEN 2 THEN "value" WHEN 3 THEN "value" END WHERE id IN (1,2,3)
回到我们刚才的分类目录的例子,我们可以使用以下SQL语句: 复制代码 代码如下: 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)
以上方案大大减少了数据库的查询操作次数,大大节约了系统资源,但是该怎样与我们的编程语言结合起来呢?我们还是用刚才分类目录的例子,以下是php的程序示例: 复制代码 代码如下: $display_order = array( 1 => 4, 2 => 1, 3 => 2, 4 => 3, 5 => 9, 6 => 5, 7 => 8, 8 => 9 ); $ids = implode(",", array_keys($display_order)); $sql = "UPDATE categories SET display_order = CASE id "; foreach ($display_order as $id => $ordinal) { $sql .= sprintf("WHEN %d THEN %d ", $id, $ordinal); // 拼接SQL语句 } $sql .= "END WHERE id IN ($ids)"; echo $sql; mysql_query($sql);