2017-12-11 17 views
0

データベースに保存するドキュメントには、同じファイルの異なるバージョン間で一意のID(da_document_id)と共有ID(da_doc_id)があります。同じ種類のファイルの新しいバージョンを追加したとすると、da_document_idは一意ですが、da_doc_idは同じままです。私はテーブルに新しい列を追加し、その特定のファイルの最新バージョンの一意のIDを設定したいと思います。この時点で、すべてのレコードをda_doc_id 14493の最新バージョンで更新しています。テーブルの異なるda_doc_idsに基づいてそれを更新するにはどうすればよいですか?新しい列を追加した後にテーブルの各行を更新する

UPDATE da_favourites 
SET da_document_id = (SELECT da_document_id 
         FROM da_documents 
         where da_version = (SELECT MAX(da_version) 
              FROM da_documents 
              WHERE da_doc_id = 14493 
              GROUP BY da_doc_id)); 

da_favouritesテーブルのすべてのda_doc_idsを参照してください。

@edit

表は次のようになります。特定のda_doc_idの最新のものを各da_document_idに取り込みたいとします。 1つのda_doc_idは、da_document_id 11111,22222などの間で共有されている可能性があります。各da_document_idには、元々1から始まるda_versionがあります。da_doc_idのda_document_idを選択します。私は私がイメージからすべてを通過する特定のda_doc_id 14493.ためda_document_idを更新してコードで

enter image description here

+0

質問を編集して、サンプルデータと希望の結果を提供できますか? –

+0

@GordonLinoff編集 – hellomate

答えて

1

おそらく、これ(未テスト)のようなものが必要です。

UPDATE da_favourites o 
    SET da_document_id = 
      (SELECT da_document_id 
      FROM da_documents d 
      WHERE  da_version IN ( SELECT MAX (da_version) 
             FROM da_documents i 
             WHERE i.da_doc_id = d.da_doc_id 
            GROUP BY i.da_doc_id) 
        AND d.doc_id = o.da_doc_id); 
+0

声明のなかでいくつかの 'da_'が欠けているだけでなく、機能します!ありがとうございました。 – hellomate

関連する問題