Quote: 引用: 怎样写删除语句实现结果 最终结果是想把做一个触发器,每当有插入和更新的时候做个检查是否有重复的数据,如果有的话删除重复的记录,保留ID最大的一条 这个是你要的吗: if OBJECT_ID('tb') is not null drop table tb go create table tb ( row_id int identity(48760,1), CL_Code int, No int, Data varchar(20) ) insert into tb (CL_Code,No,Data) select 213,1,'3+4' union all select 213,1,'3+6' union all select 213,1,'3+11' union all select 213,1,'3+4' union all select 213,1,'3+6' union all select 213,1,'3+11' union all select 213,2,'3+4' union all select 213,2,'3+6' union all select 213,2,'3+11' union all select 213,2,'3+4' union all select 213,2,'3+6' union all select 213,2,'4+11' union all select 213,2,'2 W' union all select 213,2,'1+8' union all select 213,2,'3+4' union all select 213,2,'3+6' union all select 213,2,'3+11' union all select 213,2,'3+4' union all select 213,2,'3+6' union all select 213,2,'4+11' union all select 213,2,'2 W' union all select 213,2,'1+8' union all select 213,2,'3+4' union all select 213,2,'3+6' union all select 213,2,'3+11' union all select 213,2,'3+4' union all select 213,2,'3+6' union all select 213,2,'4+11' delete from tb where tb.row_id not in ( select min(row_id) as row_id from tb group by cl_code,no,data ) --查询剩余的数据 select * from tb /* row_id CL_Code No Data 48760 213 1 3+4 48761 213 1 3+6 48762 213 1 3+11 48766 213 2 3+4 48767 213 2 3+6 48768 213 2 3+11 48771 213 2 4+11 48772 213 2 2 W 48773 213 2 1+8 */