我遇到以下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;
但两人都回报我
它没有得到document_id 1,它应该返回1,2,3获取最新版本
表数据在
之下
SQL ideia是从id_project和id_req_fun
获取document_id组的最新版本(每个document_id可以有多个版本)我找不到任何问题。
答案 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