CREATE TABLE `ep_user_records` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL COMMENT '用户ID',
`last_login_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后登录时间',
PRIMARY KEY (`id`),
UNIQUE KEY `user_id_UNIQUE` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户数据记录';
用户数据记录表,当表中有用户记录时,执行更新last_login_time,否则插入数据。以前的做法是先查询是否有user_id,根据结果判断insert或者update。合理SQL方式:
INSERT INTO ep_user_records(user_id, last_login_time) VALUES (100, NOW()) ON DUPLICATE KEY UPDATE last_login_time = NOW();
此SQL语句为MySQL特有的语句,根据unique key判断表中是否有记录,执行update或insert
核心点:
1、必须有unique key,否则会判断主键列
2、UPDATE语句中不能写where条件,会自动判断unique key
3、关键字:on duplicat key