我有一张表,列出系统许可证,每个系统的多个许可证(过期的和现有的许可证)。我在这个问题上只发了两个专栏,因为他们是唯一重要的专栏。
| id | systemid |
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
| 4 | 2 |
| 5 | 3 |
| 6 | 3 |
我需要获取ID为2,4和6的行。
我需要为每个systemid收集1条记录,它必须是最早(最年轻)的记录,所以在这种情况下,id最高的记录。我一直在探索GROUP BY
,ORDER BY
和LIMIT
,但我没有产生我之后的结果。如何在一列中为每个单独的值收集一条记录,并确保它具有最高ID的记录?
我知道这是错的,但这是我目前主演的内容:
SELECT * FROM licences GROUP BY systemid ORDER BY id DESC LIMIT 1
答案 0 :(得分:1)
这将获取每个systemid的最高ID。
SELECT MAX(id), systemid
FROM ...
GROUP BY systemid
答案 1 :(得分:1)
SELECT max(id), systemid FROM table GROUP BY systemid
请注意,对于GROUP BY
,您选择的所有列都必须位于GROUP BY
子句中,或者包含在聚合函数中,例如max,min,sum或average。