带分组的SQL Server更新

时间:2012-09-09 22:15:20

标签: sql sql-server-2008 group-by sql-update

 insert into tableA (column1) 
 select min(tableC.column1)
 from tableB 
 inner join tableC on (tableC.coumn2 = tableB.column1
 and tableB.column2 = tableA.column2) 
 group by tableA.column2

如何根据条件tableB.column2 = tableA.column2将上述内容更改为包含分组的更新,而不是使用分组依据?

请注意,我使用的是SQL SERVER 2008.

1 个答案:

答案 0 :(得分:29)

  Update A set Column1 = minC    
    from (select Ab.Column2, min(C.Column1) as minC
            from A Ab
            inner join B on Ab.Column2 = B.Column2
            inner join C on C.column2 = B.Column2 --No need to add again the A.col2 = B.col2
            group by Ab.Column2) Grouped where A.Column2 = Grouped.Column2
这是你想要的吗? 这将为每个列A获取C.Column1最小值,并将根据条件A.Column1A.Column2 = Grouped.Column2(您之前插入的位置)中更新它。

这是一个SQL-Fiddle Demo