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

如何批量更新表中order_date为对应Med_Num的最早Trans_Date

批量更新Order_Date为对应Med_Num的最早Trans_Date

核心解决方案

使用分组子查询+关联更新的方式,一次性为所有Med_Num对应的行设置正确的Order_Date,无需手动逐个操作:

通用SQL语法(适配MySQL、PostgreSQL等)

UPDATE Products.audit a
JOIN (
    -- 按Med_Num分组,计算每个分组的最早交易日期
    SELECT Med_Num, MIN(Trans_Date) AS earliest_trans_date
    FROM Products.audit
    GROUP BY Med_Num
) b ON a.Med_Num = b.Med_Num
SET a.Order_Date = b.earliest_trans_date;

SQL Server专属语法

UPDATE a
SET a.Order_Date = b.earliest_trans_date
FROM Products.audit a
INNER JOIN (
    SELECT Med_Num, MIN(Trans_Date) AS earliest_trans_date
    FROM Products.audit
    GROUP BY Med_Num
) b ON a.Med_Num = b.Med_Num;

逻辑说明

  1. 子查询部分:通过GROUP BY Med_Num和MIN(Trans_Date),计算出每个药品编号对应的最早交易日期。
  2. 关联更新:将原表与子查询结果通过Med_Num关联,把原表中每一行的Order_Date替换为对应分组的最早交易日期。

验证步骤(执行更新前推荐)

先通过SELECT语句确认预期结果是否正确,避免误操作:

SELECT 
    a.Med_Key,
    a.Patient_ID,
    a.Med_Num,
    a.Trans_Type,
    a.Trans_Date,
    b.earliest_trans_date AS expected_order_date
FROM Products.audit a
JOIN (
    SELECT Med_Num, MIN(Trans_Date) AS earliest_trans_date
    FROM Products.audit
    GROUP BY Med_Num
) b ON a.Med_Num = b.Med_Num;

注意事项

  • 执行更新前建议备份表数据,避免意外错误。
  • 如果Trans_Date是字符串类型而非日期类型,需确保数据库能正确识别日期格式并计算最小值;若格式不统一,需先转换为日期类型再执行MIN函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 13:41:38