【发布时间】:2014-09-18 09:02:05
【问题描述】:
我最近偶然发现了这个线程,其中用户试图使用基于另一个查询的最大值的子查询返回一些数据,Original Post 这正是我想做的。
我要做的是从我的审计表“Modification_Log”中提取最近的日志条目,以便我可以列出最近的更改日期,以及谁以比检索多个查询更优雅的方式进行更改。我已经在这里Database Administrator's Stack 进行了更详细的介绍,我不是要求用勺子喂食,但我根本不知道出了什么问题!
SELECT Employee.EmployeeID, Employee.PositionID, Employee.Title, Employee.Firstname, Employee.Surname, Employee.Email, Modification_Log.ModifiedDate, Modification_Log.ModifiedEmployee
FROM Employee INNER JOIN Modification_Log ON Employee.EmployeeID = Modification_Log.RecordID INNER JOIN
(SELECT Modification_Log.RecordID, Max(Modification_Log.ModificationID) As NewestModificationID
FROM Modification_Log
GROUP BY Modification_Log.RecordID) As LogMax
ON Employee.EmployeeID = LogMax.RecordID AND Modification_Log.ModificationID = LogMax.NewestModificationID
WHERE Employee.EmployeeID = 3 AND Modification_Log.TableName = 'Employee'
编辑:我按照@maxhugen 的建议在下面做了,瞧……访问它的无限智慧重新排列查询以首先引用连接的查询,我已经编辑它并再次用子查询替换,这个工作时间:
SELECT Employee.EmployeeID, Employee.PositionID, Employee.Title, Employee.Firstname, Employee.Surname, Employee.Email, Modification_Log.ModifiedDate, Modification_Log.ModifiedEmployee
FROM
(SELECT Modification_Log.RecordID, Max(Modification_Log.ModificationID) As NewestModificationID
FROM Modification_Log
GROUP BY Modification_Log.RecordID) As LogMax
INNER JOIN (Employee INNER JOIN Modification_Log ON Employee.EmployeeID = Modification_Log.RecordID) ON (LogMax.NewestModificationID = Modification_Log.ModificationID) AND (LogMax.RecordID = Employee.EmployeeID)
WHERE Employee.EmployeeID=3 AND Modification_Log.TableName='Employee';
【问题讨论】: