一尘不染

如果列值相同,则仅选择具有最高id值的行

sql

如何从表中选择所有内容,并且如果列的值相同,name则仅选择具有id最大值的行,因此,如果有这样的表:

  id name   age country
 ---+------+---+------- 
   1  bob    24  UK
   2  john   48  USA
   3  janet  72  USSR
   4  bob    96  Ukraine

它只会选择ID最高的“ bob”,因此结果将返回:

  id name   age country
 ---+------+---+------- 
   2  john   48  USA
   3  janet  72  USSR
   4  bob    96  Ukraine

谢谢你。


阅读 150

收藏
2021-03-08

共1个答案

一尘不染

您可以使用子查询来计算每个名称的最大ID,然后返回与该子查询返回的ID匹配的所有行:

SELECT *
FROM People
WHERE id IN (SELECT MAX(id) FROM People GROUP BY Name)

请看这里的小提琴。

2021-03-08