每个唯一列值获取一条记录

时间:2014-04-16 22:14:11

标签: mysql sql group-by sql-order-by limit

我有一张表,列出系统许可证,每个系统的多个许可证(过期的和现有的许可证)。我在这个问题上只发了两个专栏,因为他们是唯一重要的专栏。

| id | systemid | 
|  1 |        1 |
|  2 |        1 |
|  3 |        2 |
|  4 |        2 |
|  5 |        3 |
|  6 |        3 |

我需要获取ID为2,4和6的行。

我需要为每个systemid收集1条记录,它必须是最早(最年轻)的记录,所以在这种情况下,id最高的记录。我一直在探索GROUP BYORDER BYLIMIT,但我没有产生我之后的结果。如何在一列中为每个单独的值收集一条记录,并确保它具有最高ID的记录?

我知道这是错的,但这是我目前主演的内容:

SELECT * FROM licences GROUP BY systemid ORDER BY id DESC LIMIT 1

2 个答案:

答案 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。