用foreach更新sql表

时间:2014-12-03 15:05:19

标签: mysql sql sql-update

我有一个记录集,我需要每行更新。

Contract Number  Reference Number

1488126698627   112082
0000926775991   629013
0000926775991   
1808199032200   928022
0000526840337   630422
0000526840337   
0000527102517   
0000527102517   117312
0000527135329   941407
0082100091988   112310
0082100091988   
1808199524881   21435
0000927142120   80960
2223200018220   334370
2972200000048   335784  
0000927055614   
0000927055614   328196

我可以在逻辑等于的地方运行什么样的语句:

对于我的记录集的每一行,如果参考编号为空并且具有匹配的合同编号,则将参考编号设置为等于匹配合同的参考编号。

所以合约号0000526840337有4行,但只有1行有参考号,我需要将参考号630422复制到其他3个匹配的行中。

1 个答案:

答案 0 :(得分:1)

您可以使用join

update recordset t join
       (select ContractNumber, max(ReferenceNumber) as ReferenceNumber
        from recordset t
        group by ContractNumber
       ) tt
       on t.ContractNumber = tt.ContractNumber
    set t.ReferenceNumber = tt.ReferenceNumber
    where t.ReferenceNumber is null;