我有一个数据库里有个表 tj_fp
rq bh cdh gh pjh fpje rpttitle
2006-1-1 1 4 4 605 10 标题
2006-1-1 1 4 4 605 10 标题
2006-1-1 1 4 4 605 10 标题
2006-1-2 2 3 1 767 5 标题
2006-1-3 1 2 2 747 1 标题如何删除多余的两行2006-1-1 1 4 4 605 10 标题,使表变为 rq bh cdh gh pjh fpje rpttitle
2006-1-1 1 4 4 605 10 标题
2006-1-2 2 3 1 767 5 标题
2006-1-3 1 2 2 747 1 标题
我直接删除的是时候总是出现“键列信息不足或不正确。更新影响过多的行。”,按网站上的也好像提示有语法错误,我新手啊,各位高手帮帮忙啊!谢谢!!!
rq bh cdh gh pjh fpje rpttitle
2006-1-1 1 4 4 605 10 标题
2006-1-1 1 4 4 605 10 标题
2006-1-1 1 4 4 605 10 标题
2006-1-2 2 3 1 767 5 标题
2006-1-3 1 2 2 747 1 标题如何删除多余的两行2006-1-1 1 4 4 605 10 标题,使表变为 rq bh cdh gh pjh fpje rpttitle
2006-1-1 1 4 4 605 10 标题
2006-1-2 2 3 1 767 5 标题
2006-1-3 1 2 2 747 1 标题
我直接删除的是时候总是出现“键列信息不足或不正确。更新影响过多的行。”,按网站上的也好像提示有语法错误,我新手啊,各位高手帮帮忙啊!谢谢!!!
1 2006-1-1 1 4 4 605 10 标题
2 2006-1-1 1 4 4 605 10 标题
3 2006-1-1 1 4 4 605 10 标题
4 2006-1-2 2 3 1 767 5 标题
5 2006-1-3 1 2 2 747 1 标题
delete tj_fp where ID not in
(
select max(ID) from tj_fp
group by rq,bh,cdh,gh,pjh,fpje,rpttitle
having count(*)
)
delete tj_fp where ID not in
(
select max(ID) from tj_fp
group by rq,bh,cdh,gh,pjh,fpje,rpttitle
)
1.增加标识列.
a.使用企业管理器增加标识列
在SQLSERVER企业管理器中右键点击该表,从右键菜单中选择"设计表",在表设计窗口中第一行处点击右键,从右键菜单中选择"插入列",然后输入列名为ID,数据类型为int,然后点击窗口下方该新列属性窗口中的"标识",从组合框中选择"是".然后保存.
b.使用SQL语句增加标识列
在查询分析器中执行以下代码:
alter table 数据库名.所有者.表名称 add ID int identity(1,1) /*ID从1开始递增,每次增1*/
例如:假设数据库名为mydb,所有者为dbo,表名称为tj_fp
alter table mydb.dbo.tj_fp add ID int identity(1,1)
2.删除重复行
a.只保留ID最小的行
delete tj_fp from tj_fp as a
where not exists(select 1 from tj_fp where
rq = a.rq and
bh = a.bh and
cdh = a.cdh and
gh = a.gh and
pjh = a.pjh and
fpje = a.fpje and
rpttitle = a.rpttile and
id < a.id)
b.只保留ID最大的行
delete tj_fp from tj_fp as a
where not exists(select 1 from tj_fp where
rq = a.rq and
bh = a.bh and
cdh = a.cdh and
gh = a.gh and
pjh = a.pjh and
fpje = a.fpje and
rpttitle = a.rpttile and
id > a.id)