You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测logout_time字段是否更新并同步修改salary字段的SQL查询问题

你写的SELECT语句不存在is updated语法,且该需求属于数据更新逻辑,不是单纯的查询需求,按不同使用场景对应正确写法如下:

  • 场景1:手动执行UPDATE操作更新logout_time时同步修改salary
    直接在同一条UPDATE语句中嵌入判断逻辑即可,示例如下:

    UPDATE abc 
    SET 
      logout_time = '2021-08-24 19:30:00', -- 替换为你要更新的logout_time新值
      salary = CASE 
        WHEN logout_time != '2021-08-24 19:30:00' THEN 4567 
        ELSE salary 
      END
    WHERE id = 1; -- 替换为你实际要更新的行的筛选条件
    

    逻辑说明:当原有logout_time与要更新的新值不一致时,salary自动改为4567,否则保持原值不变。

  • 场景2:任意渠道更新logout_time都自动触发salary修改
    可使用数据库触发器实现自动处理,以MySQL为例的触发器创建语句如下:

    DELIMITER //
    CREATE TRIGGER sync_salary_after_logout_time_update
    BEFORE UPDATE ON abc
    FOR EACH ROW
    BEGIN
      -- 对比更新前后的logout_time值,发生变化则修改salary
      IF OLD.logout_time <> NEW.logout_time THEN
        SET NEW.salary = 4567;
      END IF;
    END //
    DELIMITER ;
    

    触发器创建完成后,只要任意UPDATE操作修改了某行的logout_time值,都会自动将对应行的salary改为4567,无需手动写额外逻辑。

  • 场景3:无需修改存储数据,仅查询时动态计算salary展示值
    如果你不需要修改表中实际存储的数据,只是查询时根据logout_time是否为初始值动态返回salary,需要你先单独存储每条记录的初始logout_time值(假设字段名为init_logout_time),查询写法如下:

    SELECT 
      login_time,
      logout_time,
      CASE 
        WHEN logout_time <> init_logout_time THEN 4567
        ELSE salary
      END AS salary
    FROM abc;
    

内容的提问来源于stack exchange,提问作者user14937341

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:36:02