sql 如何過濾重覆記錄

2021-09-01 14:43:58 字數 1286 閱讀 8925

請各位大俠幫忙了

問題1:對於以下幾個記錄

id123456

123123

123456

123456

123789

所有執行完sql後的結果順序與原id順序相同,另外由於涉及到數十萬條記錄的操作,要求速度要快

要求結果1:去除重複id,顯示記錄結果為

123456

123123

123789

要求結果2:去掉重複id,顯示結果為

123123

123789 (與結果1不同的是將所有123456都去除了,而結果1進行了儲存)

要求3:根據閾值的不同,決定是否進行重複過濾,例如閾值設定為2,由於123456的重複個數為3,那麼由於3》2

結果為123123

123789

如果閾值為4,由於3《4

結果為123456

123123

123456

123456

123789

要求結果4:上面提到的過濾均是整個欄位的過濾,如果有如下新的需求,只針對欄位的前三位進行過濾,上面欄位的前三位均是123,那麼過濾結果是這6個字串都是相同的(因為只取前三位作為比較依據),最終輸出結果就是這六個字串,

而如果選擇前四位進行過濾,上面欄位中有三個是相同的,1234開頭的,最終輸出結果就是這三個字串

要求結果1:

如果只取id列 select distinct id from table1

如果還有其他列,在id相同情況下,取col1最小的記錄。

select id,col1 from table1 t1 where not exists(select * from table1 where id=t1.id and col1>t1.col1)

要求結果2:

select id from table1 t1 where not exists (select * from table1 where id=t1.id)

select id from table1 t1 where (select count(*) from table1 where id=t1.id)=1

要求3:例如閾值設定為2

select id from table1 t1 where (select count(*) from table1 where id=t1.id)<=2

要求結果4:選擇前四位進行過濾

select distinct id=left(id,4) from table1

只要把前面語句中的id換成left(id,4)就可以了。

sql 重覆記錄和重覆記錄數

如果table1有兩個column adress和pepole,那麼下面的sql可以找出table1裡的重覆記錄和重覆記錄數 create table table1 adress nvarchar 10 pepole nvarchar 10 insert table1 select 寧波 張三 nb...

SQL查詢重覆記錄,刪除重覆記錄

1 查詢表中多餘的重覆記錄,重覆記錄是根據單個字段 docid 來判斷 select from tablename where docid in select docid from tablename group by docid h ing count docid 1 例二 select from...

SQL 刪除重覆記錄

例如 id name value 1 a pp 2 a pp 3 b iii 4 b pp 5 b pp 6 c pp 7 c pp 8 c iii id是主鍵 要求得到這樣的結果 id name value 1 a pp 3 b iii 4 b pp 6 c pp 8 c iii 方法1delet...