Sql 如何选择同一组的顶级记录?

Sql 如何选择同一组的顶级记录?,sql,Sql,现在我使用的是MS SQL Server 2008。我想知道是否可以选择同一组的顶部记录。我的表中有3个字段。这是我的桌子 ID GroupNo FieldOfInterest 0001 G1 Football 0002 G2 Football 0003 G2 Basketball 0004 G3 Golf

现在我使用的是MS SQL Server 2008。我想知道是否可以选择同一组的顶部记录。我的表中有3个字段。这是我的桌子

ID      GroupNo     FieldOfInterest  
0001    G1                  Football  
0002    G2                  Football  
0003    G2                  Basketball
0004    G3                  Golf
0005    G3                  Swimming  
SELECT t1.*
FROM table AS t1
INNER JOIN (
    SELECT MIN(ID) AS MinID
    FROM table
    GROUP BY GroupNo) AS t2
ON t1.id = t2.MinID
我想像那样从这个表中选择记录

ID      GroupNo             FieldOfInterest  
0001    G1                  Football  
0002    G2                  Football  
0004    G3                  Golf  
SELECT t1.*
FROM table AS t1
INNER JOIN (
    SELECT MIN(ID) AS MinID
    FROM table
    GROUP BY GroupNo) AS t2
ON t1.id = t2.MinID
我该怎么做?请帮帮我。
关于

SELECT t1.*
FROM table AS t1
INNER JOIN (
    SELECT MIN(ID) AS MinID
    FROM table
    GROUP BY GroupNo) AS t2
ON t1.id = t2.MinID
假设“top record”是指具有最相同ID的记录,因为您尚未提供订单

SELECT t1.*
FROM table AS t1
INNER JOIN (
    SELECT MIN(ID) AS MinID
    FROM table
    GROUP BY GroupNo) AS t2
ON t1.id = t2.MinID
SELECT    ID,
          GroupNo,
          FieldOfInterest
FROM      YOUR_TABLE a,    
          (SELECT    MIN(ID) AS ID
           FROM      YOUR_TABLE 
           GROUP BY  GroupNo) b
WHERE    a.ID = b.ID;
在这里,我猜您所说的
top record
是指具有最小ID值的
记录

SQL Server ROW\u NUMBER()函数可以为您解决这个问题:

SELECT t1.*
FROM table AS t1
INNER JOIN (
    SELECT MIN(ID) AS MinID
    FROM table
    GROUP BY GroupNo) AS t2
ON t1.id = t2.MinID
create table interests (
    ID  int,
    GroupNo varchar(2),
    FieldOfInterest varchar(20)
)

insert into interests
values (1, 'G1', 'Football'),
    (2, 'G2', 'Football'),
    (3, 'G2', 'Basketball'),
    (4, 'G3', 'Golf'),
    (5, 'G3', 'Swimming');

with cte as (
    select ROW_NUMBER() OVER (PARTITION BY GroupNo ORDER BY ID) as row, *
    from interests
)
select c.ID, c.GroupNo, c.FieldOfInterest
from cte c
where row = 1