-- 维护计划按批次归组:同一份周期计划共用 batch_id,列表按批次展示一级,展开看各期任务 ALTER TABLE `mes_device_prevent_task` ADD COLUMN `batch_id` varchar(64) DEFAULT NULL COMMENT '计划批次' AFTER `prevent_id`; UPDATE `mes_device_prevent_task` t JOIN ( SELECT MIN(id) AS batch_id, prevent_id, device_id, IFNULL(user_code, '') AS user_code, create_date FROM `mes_device_prevent_task` GROUP BY prevent_id, device_id, IFNULL(user_code, ''), create_date ) g ON t.prevent_id <=> g.prevent_id AND t.device_id <=> g.device_id AND IFNULL(t.user_code, '') = g.user_code AND t.create_date <=> g.create_date SET t.batch_id = g.batch_id WHERE t.batch_id IS NULL OR t.batch_id = ''; UPDATE `mes_device_prevent_task` SET `batch_id` = `id` WHERE `batch_id` IS NULL OR `batch_id` = ''; ALTER TABLE `mes_device_prevent_task` ADD INDEX `idx_prevent_task_batch_id` (`batch_id`);