SQL列重复时取第一行(可用于无主键、uniqueidentifier主键表)
SQL Server表如下
字段
列名 | 数据类型 | 允许空 | 备注 |
ID | uniqueidentifier | 否 | 主键 |
BID | uniqueidentifier | 否 | 非主键,可重复 |
CreateTime | CreateTime | 否 | 默认值getdate() |
我们需要查询此表中BID列重复值的第一条记录,那么可以使用到下面的SQL 语句。
Select * From (Select *,(row_number() Over(partition By BID Order BY CreateTime)) RowNum From Table) T where RowNum=1
我们查MSDN可知:http://msdn.microsoft.com/zh-cn/library/ms186734.aspx,ROW_NUMBER是“返回结果集分区内行的序列号,每个分区的第一行从 1 开始”,所以我们取分区为1即去除了BID列重复值的第一条记录。