使用方法:MySQL case when
MySQL 的 case when 的语法有两种:
- 简单函数
CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END
- 搜索函数
CASE WHEN [expr] THEN [result1]…ELSE [default] END
demo:
// 批量数据初始化
$update_data = [];
$update_data[] = [
'id' => $v['id'],
'start_time' => $start_time,
'end_time' => $end_time
];
// 字段数数据整合
$field_start_time = ''; // 列1
$field_end_time = ''; // 列2
$ids = []; // 筛选条件(in)
// 循环拼接各字段sql 获取in条件
foreach($update_data as $v){
$field_start_time .= 'WHEN '.$v['id'].' THEN "'.$v['start_time'].'" ';
$field_end_time .= 'WHEN '.$v['id'].' THEN "'.$v['end_time'].'" ';
$ids[] = $v['id'];
}
// 拼接最终sql
$sql = 'UPDATE plan SET start_time = (CASE id '.$field_start_time.' END), end_time = (CASE id '.$field_end_time.' END) WHERE id IN ('.implode(',', $ids).')';
// 执行
$db->exec($sql);