首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

写剔除重复数据的命令

2013-10-14 
写删除重复数据的命令怎样写删除语句实现结果最终结果是想把做一个触发器,每当有插入和更新的时候做个检查

写删除重复数据的命令
写剔除重复数据的命令
怎样写删除语句实现结果
写剔除重复数据的命令
最终结果是想把做一个触发器,每当有插入和更新的时候做个检查是否有重复的数据,如果有的话删除重复的记录,保留ID最大的一条


怎样写删除语句实现结果
写剔除重复数据的命令
最终结果是想把做一个触发器,每当有插入和更新的时候做个检查是否有重复的数据,如果有的话删除重复的记录,保留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_idCL_CodeNoData
4876021313+4
4876121313+6
4876221313+11
4876621323+4
4876721323+6
4876821323+11
4877121324+11
4877221322 W
4877321321+8
*/


消息 147,级别 15,状态 1,第 4 行
聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。


我用的是SQL Server 2008r2,完全可以运行,你用的是什么数据库?
[解决办法]
要不改成这样试试:
lete from tb 
from tb t1
inner join 
(
    select cl_code,no,data,
           min(row_id) as row_id
from tb
group by cl_code,no,data
) t2
    on t1.CL_Code = t2.CL_Code
       and t1.No = t2.No
       and t1.Data = t2.Data
       and t1.row_id <> t2.row_id

--查询剩余的数据
select *
from tb
/*
row_idCL_CodeNoData
4876021313+4
4876121313+6
4876221313+11
4876621323+4
4876721323+6
4876821323+11
4877121324+11
4877221322 W
4877321321+8
*/

热点排行