SearchCtrl K
Appearance
👇公众号👇---👇 微信 👇
有缘人请我喝杯咖啡吧
👇 微信 👇---👇支付宝👇
Appearance
TIP
MySQL中使用ON DUPLICATE KEY UPDATE实现批量更新、存在即更新不存在则插入功能
CREATE TABLE `fa_attendance_group_calendar` (
`attendance_group_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '考勤组',
`date` date NOT NULL COMMENT '日期',
`year` varchar(20) NOT NULL DEFAULT '' COMMENT '年',
`month` varchar(20) NOT NULL DEFAULT '' COMMENT '月',
`day` varchar(20) NOT NULL DEFAULT '' COMMENT '日',
`is_work` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否工作:1=工作,2=休息',
PRIMARY KEY (`date`),
UNIQUE KEY `date_idx` (`date`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤组工作排班日历';
INSERT INTO `fa_attendance_group_calendar` (`attendance_group_id`, `date`, `year`, `month`, `day`, `is_work`) VALUES (1, '2024-08-01', '2024', '8', '1', 1);
INSERT INTO `fa_attendance_group_calendar` (`attendance_group_id`, `date`, `year`, `month`, `day`, `is_work`) VALUES (1, '2024-08-02', '2024', '8', '2', 1);
INSERT INTO `fa_attendance_group_calendar` (`attendance_group_id`, `date`, `year`, `month`, `day`, `is_work`) VALUES (1, '2024-08-02', '2024', '8', '2', 2),(1, '2024-09-02', '2024', '9', '2', 2),(1, '2024-09-03', '2024', '9', '3', 2) ON DUPLICATE KEY UPDATE `is_work` = values(is_work);
这条Sql语句的意思是,如果插入的数据与表中已有date的数据存在重复,则更新is_work字段的值为values(is_work),即插入的数据的值。这条语句结果会更新2024-08-02的is_work数据为2,会新增2024-09-02和2024-09-03的数据。
测试结果如下