SQL 查询数据,如果重复数据只保留第一条

oppa8599 2018-11-24 12:28:54
SQL 查询数据,如果重复数据只保留第一条

比如:


userid time
1 2018-11-20 12:24:20
2 2018-11-20 14:21:20
3 2018-11-21 09:21:52
2 2018-11-23 23:21:20
4 2018-11-24 10:04:39
4 2018-11-24 12:04:39

结果:
userid time
1 2018-11-20 12:24:20
2 2018-11-20 14:21:20
3 2018-11-21 09:21:52
4 2018-11-24 10:04:39
...全文
5095 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
天风不落尘 2018-11-26
  • 打赏
  • 举报
回复
引用 2 楼 二月十六的回复:
Select userid,MIN(time) AS time from 表名 GROUP BY userid


对gbase数据库了解吗大神?
二月十六 2018-11-26
  • 打赏
  • 举报
回复
引用 5 楼 Fury_firstly 的回复:
[quote=引用 2 楼 二月十六的回复:]
Select userid,MIN(time) AS time from 表名 GROUP BY userid
对gbase数据库了解吗大神?[/quote] 不太了解,咋地啦?
qq_25073223 2018-11-25
  • 打赏
  • 举报
回复
请参阅这个采用row_number剔除重复数据的方法
此函数剔除重复数据的原理:
先群组内排序,然后根据新生成的排序号对数据进行处理。
吉普赛的歌 2018-11-24
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('dbo.[t]') IS NOT NULL 
	DROP TABLE dbo.[t]
GO
CREATE TABLE dbo.[t](
[userid] INT
,[time] DATETIME
)
GO
SET NOCOUNT ON
INSERT INTO dbo.[t] VALUES(N'1',N'2018-11-20 12:24:20')
INSERT INTO dbo.[t] VALUES(N'2',N'2018-11-20 14:21:20')
INSERT INTO dbo.[t] VALUES(N'3',N'2018-11-21 09:21:52')
INSERT INTO dbo.[t] VALUES(N'2',N'2018-11-23 23:21:20')
INSERT INTO dbo.[t] VALUES(N'4',N'2018-11-24 10:04:39')
INSERT INTO dbo.[t] VALUES(N'4',N'2018-11-24 12:04:39')
GO
--- 以上为测试数据 ----

SELECT 
userid
,[time] 
FROM (
	SELECT ROW_NUMBER() OVER (PARTITION BY userid ORDER BY [time]) AS rid,* FROM t
) AS tt
WHERE tt.rid=1
/*
userid      time
----------- -----------------------
1           2018-11-20 12:24:20.000
2           2018-11-20 14:21:20.000
3           2018-11-21 09:21:52.000
4           2018-11-24 10:04:39.000
 */


二月十六 2018-11-24
  • 打赏
  • 举报
回复
Select userid,MIN(time) AS time from 表名 GROUP BY userid


22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧