取得每个独特的列值的一个记录(Get one record per unique column va

2019-10-19 21:54发布

我有一个列表制度许可证,多个许可证每个系统(已过期的和现有的)的表。 我只贴两列在这个问题上,他们是唯一重要的。

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

我需要的2,4和6的ID来获得行。

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

我知道这是错的,但它就是我目前在主演:

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

Answer 1:

SELECT max(id), systemid FROM table GROUP BY systemid

需要注意的是与GROUP BY ,您选择必须是在所有列GROUP BY子句或包裹在一个聚集功能,如最大值,最小值,总和或平均。



Answer 2:

这将抓住每SYSTEMID最高的ID。

SELECT MAX(id), systemid
FROM ...
GROUP BY systemid


文章来源: Get one record per unique column value