2014-04-16 71 views
1

我有一张表列出了系统许可证,每个系统(过期的和现有的)的多个许可证。我只在这个问题上发布了两列,因为它们是唯一重要的。每个唯一列值获取一条记录

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

我需要的2,4和6

我需要收集1个结果为每个SYSTEMID的ID来获得的行和它是最早的(最小的)记录,所以在这种情况下,具有最高ID的记录。我一直在探索GROUP BY,ORDER BYLIMIT,但我没有产生我追求的结果。如何为一列中的每个单独值收集一条记录并确保它是最高ID的记录?

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

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

+1

'select max(id),systemid from licenseid by systemid'也许? – Chrisky

+1

Chrisky现货,你应该添加它作为答案:) – Arbiter

+0

这里的箭头不会自己点击... – Chrisky

回答

1

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

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

+0

这个作品,谢谢!我不得不使用'MAX(id)作为id'来获取我之后的输出,谢谢!我可以在2分钟内接受。 – Arbiter

1

这将抓住每SYSTEMID最高的ID。

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

这个作品,谢谢 – Arbiter