14
 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

上記を、基準に基づいてgroup byで挿入するのではなく、group byで更新するように変更するにはどうすればよいtableB.column2 = tableA.column2ですか?

私が使用していることに注意してくださいSQL SERVER 2008.

4

1 に答える 1

31
  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

これは、あなたの望むことですか?これにより、columnAごとに最小値が取得され、条件に基づいて(前に挿入していた場所で)C.Column1更新されます。A.Column1A.Column2 = Grouped.Column2

これがSQL-Fiddleデモです

于 2012-09-09T23:02:14.793 に答える