SQL查询-获取最新版本
我正在将T-Sql与SQLServer2008结合使用。假设我有父表: 项目: 和子表项目修订: 如何为每个项目提供最新的ProjectRevision?像这样: 假设ProjectRevID和DateCreated都在同一个方向上,即下一个版本接收到的ID高于上一个版本SQL查询-获取最新版本,sql,sql-server-2008,Sql,Sql Server 2008,我正在将T-Sql与SQLServer2008结合使用。假设我有父表: 项目: 和子表项目修订: 如何为每个项目提供最新的ProjectRevision?像这样: 假设ProjectRevID和DateCreated都在同一个方向上,即下一个版本接收到的ID高于上一个版本 从项目加入允许您访问项目中的其他列(如果需要)。无论ProjectRevId和DateCreated之间是否存在任何关系,下面的查询都会起作用 SELECT * FROM ProjectRevisions INNER JOIN
从项目加入允许您访问项目中的其他列(如果需要)。无论ProjectRevId和DateCreated之间是否存在任何关系,下面的查询都会起作用
SELECT *
FROM ProjectRevisions
INNER JOIN (
SELECT ProjectId
, MAX(DateCreated) AS DateCreated
FROM ProjectRevisions
GROUP BY ProjectId
) AS CurrentRevision
ON CurrentRevision.ProjectId = ProjectRevisions.ProjectId
AND CurrentRevision.DateCreated = ProjectRevisions.DateCreated
您使用哪种SQL方言?严格来说,要获得显示的结果并不需要两个表。它只需要ProjectRevisions。他可能希望ProjectNam varchar出现在最终选择列表中。ProjectRevID在我的实际数据库中是一个GUID,因此MAXProjectRevID没有意义。谢谢你的帮助, ProjectRevID ProjectID DateCreated 11 1 10/15/2009 12 1 10/19/2009 13 1 10/25/2009 21 2 10/05/2009 ProjectRevID ProjectID DateCreated 13 1 10/25/2009 21 2 10/05/2009
select x.mProjectRevID, p.ProjectID, p.ProjectNam, x.mDateCreated
from Projects p
inner join
(
select projectID
, max(ProjectRevID) as mProjectRevID
, max(DateCreated) as mDateCreated
from ProjectRevisions
group by ProjectID
) x
on x.projectID = p.ProjectID
SELECT *
FROM ProjectRevisions
INNER JOIN (
SELECT ProjectId
, MAX(DateCreated) AS DateCreated
FROM ProjectRevisions
GROUP BY ProjectId
) AS CurrentRevision
ON CurrentRevision.ProjectId = ProjectRevisions.ProjectId
AND CurrentRevision.DateCreated = ProjectRevisions.DateCreated
select ProjectRevID, ProjectID, DateCreated
from Projects p
inner join ProjectRevisions
on ProjectRevisions.ProjectId = p.ProjectId
where ProjectRevId = (
select ProjecRevId
from ProjectRevisions
where ProjectId = p.ProjectId
order by DateCreated desc
limit 1
)