取重覆記錄最大的id列表

2021-06-12 02:31:36 字數 1150 閱讀 3354

--要求,name或tel有乙個重複,則就算是重複的,取重覆記錄最大的id列表

if object_id('t') is not null drop table t

create table t(

id int,

name varchar(10),

tel varchar(10)

)insert into t values(1,'zhang','11111');

insert into t values(2,'zhang','11111');

insert into t values(3,'zhang','22222');

insert into t values(4,'test','33333');

insert into t values(5,'test','12345');

insert into t values(6,'test1','55555');

insert into t values(7,'test3','33333');

/*這個地方你來,先謝了,呵呵。。。

*/--結果id3

67

用cte實現方法:

;with aas(

select

a.*,b.id as id2

from t as a

inner join t as b on (a.name = b.name or a.tel = b.tel) and a.id<>b.id

),bas

(select id,name,tel from a as a2 where not exists(select 1 from a where (a.name = a2.name or a.tel = a2.tel) and a.id2>a2.id)

)select * from b

union

select * from t as a2 where not exists(select 1 from a where id=a2.id)

/*id name tel

3 zhang 22222

6 test1 55555

7 test3 33333

*/

原貼:

sql去除重覆記錄 且保留id最小的 沒用

第一步 查詢重覆記錄 select from tablename where repeatfiled in select repeatfiled from tablename group by repeatfiled h ing count repeatfiled 1 這一段邏輯很簡單,就是把重複條...

有關重覆記錄的刪除

有兩個意義上的重覆記錄,一是完全重複的記錄,也即所有欄位均重複的記錄 二是部分關鍵字段重複的記錄,比如name欄位重複,而其他欄位不一定重複或重複可以忽略。1 對於第一種重複,比較容易解決,使用select distinct from tablename 就可以得到無重覆記錄的結果集。如果該錶需要刪...

Mysql的統計重覆記錄

雖說sql語法,這些主流的資料庫引擎都支援,但是每乙個資料庫引擎都有自己的特性,例如統計並顯示非重複的資料。mysql的實現形式是 資料庫test id name 1 agle 2 blibli 3 cat 4 cat 5 blibli 比如我想用一條語句查詢得到name不重複的所有資料,那就必須使...