甚至不怎么说这个问题:我有一个看起来像这样的表:
从tblServiceUsers中选择*
按服务ID排序
0 B88230BB-4943-4C10-AB0E-8ABB88A357A3
0 5653C943-7F9A-4746-B2A3-1160E9204A7E
0 08678EE7-49A7-4F63-BC39-CFCCE2C9AD65
1 B88230BB-4943-4C10-AB0E-8ABB88A357A3
1 5653C943-7F9A-4746-B2A3-1160E9204A7E
2 B88230BB-4943-4C10-AB0E-8ABB88A357A3
2 5653C943-7F9A-4746-B2A3-1160E9204A7E
我需要一个只返回与serviceID匹配的顶级(或第一个)用户标识的查询。
例如,我只想为每个ServiceID显示1个UserID。如下:
0 B88230BB-4943-4C10-AB0E-8ABB88A357A3
1 B88230BB-4943-4C10-AB0E-8ABB88A357A3
2 B88230BB-4943-4C10-AB0E-8ABB88A357A3
答案 0 :(得分:1)
您没有说它是哪个版本的SQL服务器,但对于MS SQL Server 2005以后,您可以执行以下操作:
Select SecID, ServiceID, UserID from
(
select ROW_NUMBER() OVER (PARTITION BY ServiceID ORDER BY Secid) AS row_number,
SecID,
ServiceID,
UserID
From tblSecServiceUsers
)
tempTable
where row_number = 1
答案 1 :(得分:0)
为什么不使用TOP 1和ORDER BY子句?
答案 2 :(得分:0)
你听起来好像不是太烦恼哪个UserId你只想要任何一个?如果是这样,这将有效。
SELECT MAX(UserID) AS UserID, ServiceID
FROM tblServiceUsers
GROUP BY ServiceID
ORDER BY ServiceID