我存储在数据库中的文档在同一文件的不同版本之间具有唯一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_document_id填充特定da_doc_id的最新版本。一个da_doc_id可能在da_document_id 11111,22222等之间共享。每个da_document_id都有da_version,最初从1开始。选择da_doc_id的da_document_id,其中da_version最高。
在提供的代码中,我只更新特定da_doc_id 14493的da_document_id。我想从图像中查看所有内容。
答案 0 :(得分: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);