--要求,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不重複的所有資料,那就必須使...