2017-03-15 19 views
0

私のSPにはテンポラリテーブルがあり、DBにはテーブルがあり、DBのテーブルを更新する必要があります。 selectステートメントを使用します。複数行のselect文を使用してテンポラリテーブルを使用してテーブルを更新する

しかし、私は私の一時テーブルに複数のレコードを持っており、私はDBのテーブルの最後の行だけを更新することができます。以下は

は、以下のように私が午前クエリ、

UPDATE 
Table_A 
SET 
    Table_A.col2 = Table_B.col2, 
    Table_A.col3 = Table_B.col3 
FROM 
    Some_Table AS Table_A 
    INNER JOIN temp_Table AS Table_B ON Table_A.col1 = Table_B.col1 

そして、DBテーブル構造

col1 | col2  | col3 

1 | India  | Delhi 
2 | US   | NewYork 
3 | UK   | London 

そして、一時テーブル構造である

col1 | col2  | col3 

1 | US   | NewYork 
2 | UK   | London 
3 | India  | Delhi 

したがって、複数の行のテーブルを更新する必要があります。

+2

なぜあなたがそれに参加している場合、あなたは 'col1'を更新していますか?彼らはすでに等しいです。 – SqlZim

+0

おそらくwhere句ですか?これらのテーブルのいずれも一時テーブルBTWではありません。 – scsimon

+0

@SqlZim更新された私の質問があります。今すぐチェックしてください – best

答えて

0

あなたの投稿を理解している限り、これは適切に更新されるべき解決策であるべきだと思います。これが役に立ちますようにお願いします。

WITH CTE1 
       AS (SELECT Col1 , 
          Col2 , 
          ROW_NUMBER() OVER (PARTITION BY COl1 ORDER BY Col2) AS rn 
        FROM  table_1 t1 
       ), 
      CTE2 
       AS (SELECT Col1 , 
          Col2 , 
          ROW_NUMBER() OVER (PARTITION BY COl1 ORDER BY Col2) AS rn 
        FROM  table_2 t2 
       ) 
     UPDATE br 
     SET .... 
     FROM Cte1 c1 
       INNER JOIN cte2 c2 br ON c1.Col1 = c2.Col1 
                AND c1.rn = c2.rn; 
関連する問題