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

MySQL 8如何按日期时间升序为dotable表的priority字段赋值

实现方案

你使用的是MySQL 8.0版本,支持窗口函数,可通过UPDATE结合ROW_NUMBER()窗口函数的方式实现需求,具体方案如下:

核心逻辑

先筛选出当天的所有记录,按dt字段从小到大排序生成连续行号,再将行号赋值给对应记录的priority字段。

具体SQL代码

UPDATE dotable d
INNER JOIN (
    SELECT
        dt,
        -- 按时间升序生成从1开始的连续序号
        ROW_NUMBER() OVER(ORDER BY dt ASC) AS row_num
    FROM dotable
    -- 筛选当前日期的记录,如需指定日期可替换为 DATE(dt) = '2021-08-10'
    WHERE DATE(dt) = CURDATE()
) AS ranked_data ON d.dt = ranked_data.dt
SET d.priority = ranked_data.row_num;

注意事项

  • 如果dt字段存在重复值,建议在窗口函数的排序规则中补充第二排序字段(比如表的主键ID),避免排序不稳定导致序号不符合预期,示例:ROW_NUMBER() OVER(ORDER BY dt ASC, id ASC)
  • 更新完成后可执行以下语句验证结果是否符合要求:
SELECT dt, priority FROM dotable WHERE DATE(dt) = CURDATE() ORDER BY dt ASC;

内容的提问来源于stack exchange,提问作者Edward Sheriff Curtis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 08:15:02