1. CREATE TABLE `ep_user_records` (
    2. `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    3. `user_id` int(10) unsigned NOT NULL COMMENT '用户ID',
    4. `last_login_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后登录时间',
    5. PRIMARY KEY (`id`),
    6. UNIQUE KEY `user_id_UNIQUE` (`user_id`)
    7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户数据记录';

    用户数据记录表,当表中有用户记录时,执行更新last_login_time,否则插入数据。以前的做法是先查询是否有user_id,根据结果判断insert或者update。合理SQL方式:

    1. 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