我有三张桌子
我想执行一个查询,该查询将每台机器的最大事件ID的数据连接起来,但是我在分组时遇到了一些问题。
台式机:
machine
-----------
Machine 1
Machine 2
表事件:
eventid | machine | start | stop
-----------------------------------------------
1 | Machine 1 | 2016-06-14 | 2016-06-16
2 | Machine 1 | 2016-06-16 | null
1 | Machine 2 | 2016-05-30 | null
表事件的详细信息:
eventid | machine | name | value
-----------------------------------------------
1 | Machine 1 | product | Product 1
1 | Machine 1 | person | Samuel
我尝试了以下查询,但每台计算机返回的行多...我想按计算机分组,并仅根据最大事件ID获取数据。
SELECT m.machine, MAX(e.eventid), e.start, e.stop, d.name, d.value
FROM machine m
JOIN event e ON e.machine = m.machine
JOIN eventdetails d ON d.eventid = e.eventid AND d.machine = m.machine
GROUP BY m.machine, e.start, e.stop, d.name, d.value
提前致谢。
放手一搏。它为您提供了一个内部联接,它将抑制event
表中max(eventid)
与表相同的任何内容。
SELECT m.machine, e.eventid, e.start, e.stop, d.name, d.value
FROM machine m
INNER JOIN event e ON e.machine = m.machine
INNER JOIN eventdetails d ON d.eventid = e.eventid AND d.machine = m.machine
INNER JOIN (SELECT machine, MAX(eventid) maxevent FROM event GROUP BY machine) ma ON m.machine = ma.machine AND e.eventid = ma.maxevent
GROUP BY m.machine, e.start, e.stop, d.name, d.value
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句