【问题标题】:Using a query to update existing records.使用查询更新现有记录。
【发布时间】:2011-10-18 07:05:52
【问题描述】:

基本上,我有一个包含大量记录 (10,000+) 的数据表

它们都有 4 个共同的字段,必须输入数据。唯一的数据是 TIME。

我已经做了一个组排序查询,它根据这 4 个字段确定了组的数据,然后计算了每个组的平均时间。

我现在需要在表中重新插入平均时间与实时时间,以便可以根据其类型的平均值评估每条记录的时间。

例如,查询中的一组会有结果

Process1, Week2, Operator3, Shift4, AvgOfTIME = 120.70

然后需要将该平均时间重新插入到符合这些条件的所有记录中,但要针对每个组结果和记录执行此操作。

这可能吗?

【问题讨论】:

    标签: sql ms-access select


    【解决方案1】:

    你需要更新表使用子查询

    update t1 set t1.timefield = s2.AvgOfTIME
    from yourtable t1
    inner join 
    (
      -- you query for calculating avg time
    )
    as t2
    on t1.Process1 = t2.Process1 and t1.Week2 = t2.Week2 and t1.Operator3 = t2.Operator3 and       t1.Shift4 = t2.Shift4 
    

    【讨论】:

    • 您好,感谢您的回复。我的问题是 group by 查询返回大约 7,000 个不同的组。因此,我试图让更新查询更新它们与相应组匹配的所有记录。否则,我必须创建 7,000 个更新查询还是手动执行?
    • 我不知道您的表架构,但您需要执行类似的操作 ' update t1 set t1.timefield = s2.AvgOfTIME from yourtable t1 inner join ( select Process1, Week2, Operator3, Shift4, Avg(timefield) as AvgOfTIME from yourtable group by Process1, Week2, Operator3, Shift4, Avg(timefield) ) as t2 on t1.Process1 = t2.Process1 and t1.Week2 = t2.Week2 and t1.Operator3 = t2.运算符 3 和 t1.Shift4 = t2.Shift4'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    相关资源
    最近更新 更多