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