knrt.net
当前位置:首页 >> SQL 查询一表所有数据 有重复的按时间取第一条 >>

SQL 查询一表所有数据 有重复的按时间取第一条

既然数据都重复,就时间不同,那就取max(时间)就行了吧 select 重复数据的列名1,重复数据的列名2,....,max(时间列) from table group by 重复数据的列名1,重复数据的列名2,....

使用分析函数row_number() over (partiion by ... order by ...)来进行分组编号,然后取分组标号值为1的记录即可。目前主流的数据库都有支持分析函数,很好用。 其中,partition by 是指定按哪些字段进行分组,这些字段值相同的记录将在一起编号...

IF OBJECT_ID('Table_2') > 0 DROP TABLE Table_2 GO CREATE TABLE [dbo].[Table_2] ( [tel] [INT] NOT NULL , [time] [DATETIME] NOT NULL , [name] [NVARCHAR](50) NULL ) ON [PRIMARY] INSERT dbo.Table_2 ( tel, time, name ) VALUES ( 100...

select 姓名列,count(1) as [重复次数] from 表名 group by 姓名列 having count(1)>=2 order by 重复次数 desc

这个看系统的,如果是oracle : select rowid,* from t update 时,用rowid作为条件。 如果是sql server 就得修改表结构: alter table yourtable add id int identity(1,1)-------增加一自增主键 然后用id作为update的条件

比如重复字段是 A 表 的 name 字段 select name from A group by name having count(name)>1 显示的就是 重复数 大于 1 的 name了 如果你要查看重复的数据 外面就加个 in name select * from A where name in( select name from A group by name...

试试下面的语句: delete 表 where (select count(1) from 表 as a where a.filename=表.filename and a.filetime>=表.filetime)>3

select max(id),姓名,min(职业) from 表名 group by 姓名

select * from table A where exists (select * from (select 卡号,记录点,max(记录时间) 记录时间 from table) B where A.卡号 = B.卡号 and A.记录点 = B.记录点 and A.记录时间 = B.记录时间 )

网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com