數據表說明
CREATE TABLE [FileList]( [ProjectId] INT NOT NULL ON CONFLICT FAIL, [SensorId] VARCHAR(50) NOT NULL ON CONFLICT FAIL, [FileName] VARCHAR(50) NOT NULL ON CONFLICT FAIL, [StartTime] DATETIME NOT NULL, [EndTime] DATETIME NOT NULL, [FileStatus] VARCHAR(20) DEFAULT Uncompleted, [RowId] INTEGER PRIMARY KEY AUTOINCREMENT, [Id] INT NOT NULL)
RowId作為主鍵,
用projectid,sensorid,filename三個字段作為記錄是否重復的判斷
(projectid和sensorid,可以定位到id,所以也可以用id和filename作為記錄是否重復的判斷)
1.篩選全部數據
select * from filelist
顯示有1854條數據
2.分組篩選,過濾掉重復的數據(重復的數據僅顯示一條)
select * from filelist group by projectid,sensorid,filename --group by id,filename
顯示有1552條數據,說明重復數據個數1854-1552=302
3.篩選出單條重復的數據(僅顯示一條)
select * from filelist group by id,filename having count(*) > 1
顯示有302條數據
重復數據,篩選出rowid較小的
select * ,min(rowid) from filelist group by id,filename having count(*) > 1
4.篩選出所有的重復的數據
select a.*,b.[count] from filelist as a inner join (select *,count(*) as count from filelist group by id,filename having count(*) > 1) as b on a.id = b.id and a.filename = b.filename
顯示有604條數據
5.