2017-09-28 7 views
-1

私はtable1の主キーIDを持つtable2を持っています。私は、table2と互換性のある各行の最後の日付に応じて、table1の更新を行うことをお勧めします。例:SQLはselectを使用して多くの行を更新します

tabela 1   tabela2 

ID DES CAN ###### ID DATA- 
1 test 0 ###### 1 12/10/2017 
2 test 0 ###### 1 12/09/2017 
3 test 0 ###### 2 12/09/2017 
4 test 0 ###### 3 12/10/2017 

私は、table2のIDが現在の日付+ 15日を持つtable1のレコードのみを更新するつもりです。これを試してくださいが動作しません。

UPDATE table 
SET 
    Col1 = i.Col1, 
    Col2 = i.Col2 
FROM (SELECT ID, Col1, Col2 FROM other_table) i 
WHERE i.ID = table.ID 
+0

https://blog.sqlauthority.com/2013/04/30/sql-server-update-from-select-statement-using-join-in-update-statement-multiple-tables-in-update-声明/ –

+0

使用しているデータベースであなたの質問にタグを付けてください。また、日付の比較方法についても説明します。 'id'は通常は日付を格納しません。 –

答えて

0

更新構文を検索できます。標準SQLには2つの相関サブクエリを使用します

0

、IN列(テーブルがselect参加)

更新テーブルは:

UPDATE table 
    SET Col1 = (SELECT Col1 FROM other_table i WHERE i.ID = table.ID), 
     Col2 = (SELECT Col2 FROM other_table i WHERE i.ID = table.ID) ; 

あなたはWHERE句を使用すると、試合を持っていることを確認したい場合があります。

いくつかのデータベースを使用すると、タプルを設定することができます:

UPDATE table 
    SET (Col1, Col2) = (SELECT Col1, COl2 FROM other_table i WHERE i.ID = table.ID); 

あなたの処方は、いくつかのデータベース(特にSQL ServerおよびPostgresの)で動作するはずです。

関連する問題