只是一个简单的问题.. 我有以下sql查询,它在执行时抛出错误。此查询使用内部联接与单个表。请帮忙,为什么会在ON语句中抛出错误?
SELECT OutOps.MachineId, OutOps.CBPOsVersion, OutOps.LastTimeStamp
FROM CBPOperationStatsDaily AS OutOps
INNER JOIN
(SELECT MAX(LastTimeStamp) , MachineId
FROM CBPOperationStatsDaily AS InOps
GROUP BY InOps.MachineID)
ON (InOps.LastTimeStamp=OutOps.LastTimeStamp)
编辑:添加了一个缺失的括号,仍然失败。
编辑:找到解决方案,抱歉管理员没有准确解决问题。 解决:
两个错误,第一个没有命名MAX Column
,第二个没有在InOps
中使用'ON' statement
错误。对于Join name(ON)
,将使用外部表别名,而使用GROUP BY InOps
。
答案 0 :(得分:3)
对于子查询,您缺少InOps
的表别名,而对于max(LastTimeStamp)列,则使用别名
SELECT OutOps.MachineId, OutOps.CBPOsVersion, OutOps.LastTimeStamp
FROM CBPOperationStatsDaily AS OutOps
INNER JOIN
( SELECT MAX(LastTimeStamp) as LTS , MachineId
FROM CBPOperationStatsDaily
GROUP BY MachineID) AS InOps
ON (InOps.LTS=OutOps.LastTimeStamp)
答案 1 :(得分:1)
更改连接表的别名InOps
的位置:
SELECT OutOps.MachineId, OutOps.CBPOsVersion, OutOps.LastTimeStamp FROM CBPOperationStatsDaily AS OutOps INNER JOIN
(SELECT MAX(LastTimeStamp) as LastTimeStamp , MachineId
FROM CBPOperationStatsDaily
GROUP BY MachineID) as InOps ON (InOps.LastTimeStamp=OutOps.LastTimeStamp)