3

如何从表中选择所有值,如果列的值相同,name则只选择具有id最大值的行,所以如果有这样的表:

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

它只会选择具有最高 id 的“鲍勃”,因此结果将返回:

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

谢谢你。

4

4 回答 4

8

试试这个查询

select * from table_name where ID in(select MAX(ID) from table_name  group by name)
于 2013-05-05T15:43:11.017 回答
5

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

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

在此处查看小提琴。

于 2013-05-05T15:31:01.753 回答
3

您可以使用not exists子查询过滤掉具有相同名称和更大 id 的行:

select  *
from    People p1
where   not exists
        (
        select  *
        from    People p2
        where   p1.Name = p2.Name
                and p2.Id > p1.Id
        )
于 2013-05-05T15:28:27.817 回答
2

你可以这样做:

Select Table_1.* from table_1 inner join (
Select Max(ID) as ID from Table_1 Group by ID) x On Table.Id on x.ID
于 2013-05-05T15:36:27.440 回答