获取文档SQL的最新版本

时间:2011-05-20 16:52:43

标签: mysql sql

我遇到以下SQL

的问题
SELECT c1.* FROM rmanager.requisitos_nao_funcionais c1 
left join rmanager.requisitos_nao_funcionais c2 
on c1.document_id = c2.document_id and c1.versao < c2.versao
where c1.id_projeto = 15 
and c1.id_req_fun = 5
and c2.document_id is null 
order by ordem ASC;

我也试过了一个子选择

SELECT *
FROM rmanager.requisitos_nao_funcionais A
WHERE versao = (
    SELECT MAX(versao)
    FROM rmanager.requisitos_nao_funcionais B
    WHERE B.document_id = A.document_id
)
and id_req_fun = 5
order by ordem asc;

但两人都回报我

return

它没有得到document_id 1,它应该返回1,2,3获取最新版本

表数据在

之下

enter image description here

SQL ideia是从id_project和id_req_fun

获取document_id组的最新版本(每个document_id可以有多个版本)

我找不到任何问题。

1 个答案:

答案 0 :(得分:0)

  SELECT c1.document_id, MAX(c1.version)
    FROM rmanager.requisitos_nao_funcionais as c1
   WHERE c1.id_projecto = 15
     AND c1.id_req_fun = 5
GROUP BY c1.document_id

我不确定我是否理解得当,但是给定一个项目和一个req_fun,这将为您提供该集合中每个文档的最新版本。

现在,如果您想要具有最大版本号的文档(单个版本),请尝试:

  SELECT c1.document_id, c1.version
    FROM rmanager.requisitos_nao_funcionais as c1
   WHERE c1.id_projecto = 15
     AND c1.id_req_fun = 5
ORDER BY c1.version DESC
   LIMIT 1