由于在设计表时,没有设计关键字,也没有主键。在实际使用的过程中,不小心向这个表里把相同的一些数据增加了两次。于是出现了一些完全相同的记录,请问:怎样删除其中的一条?用SQL语言会把两条都删除掉。手工删除釜提示错误。
解决方案 »
- cxgrid取值
- 怎么用sql语句去掉字段中的重复行?
- 动态按钮
- [讨论]写Delphi的编译器人厉害还是写VC那帮人厉害?
- 小问题一个!
- 小弟初学流,想要一段源代码.200分相送.
- 谁有合同管理系统和库存管理系统的免费软件或源码?
- 请教有关回调函数的种种问题。UP有分
- 为什么我用adodataset1.Append;添加数据,如果在有D的电脑上就没事,但到别的电脑上就说找不到ADO对象??
- 怎样获得TListView 中Cell位置??
- 关于adoquery与DBGrid连接后,显示的问题.双击DBGrid的某一行,把它的内容显示到旁边的Edit或是Combobox里,修改后,利用adoquery.sql.('upda
- 鼠标从Edit1中移出到speedbutton1上居然不触发Edit的OnExit事件?
ID为自动编号, 如果你表中没有你就加一个, RefNO为有重复的数据字段.
ID RefID
1 133
2 33
3 44
4 33
5 44
6 133SQL语句如下DECLARE @REFID VARCHAR(10)
DECLARE @ID INT
DECLARE @I INT
DECLARE csREFID CURSOR FOR --先得到 REFID
SELECT REFID
FROM Table1
GROUP BY REFID
HAVING COUNT(REFID)>1OPEN csREFID
FETCH NEXT FROM csREFID INTO @REFID
WHILE @@FETCH_STATUS =0
BEGIN
-------------------------------------------------------
DECLARE csID CURSOR FOR --再得到 ID
SELECT [ID] FROM Table1 WHERE REFID=@REFID ORDER BY ID
OPEN csID
FETCH NEXT FROM csID INTO @ID
FETCH NEXT FROM csID INTO @ID
WHILE @@FETCH_STATUS=0
BEGIN
DELETE FROM Table1 WHERE [ID]=@ID
FETCH NEXT FROM csID INTO @ID
END
CLOSE csID
DEALLOCATE csID
--------------------------------------------------------
FETCH NEXT FROM csREFID INTO @REFID
ENDCLOSE csREFID
DEALLOCATE csREFID
GO最终得到的数据如下
ID RefID
1 133
2 33
3 44你自已套用这个格式吧.
delete .....
delete from table where 条件 /* 删除那两条 */
insert into table select * from #temp /* 放回正常的记录 */
DELETE FROM TABLE
WHERE ID IN (SELECT ID FROM TABLE TI JOIN TABLE T2
ON T1.ID>T2.ID AND
T1.FIELD=T2.FIELD AND......)
因为现在数据库结构违返了数据库原理.建议在现在的表结构中新增一个KEY(可以使用int标识),然后用sql找到符合条件的记录,并删除重复的记录.2.使用临时表
select distinct * into #temp from table where condition //将查询符合条件的记录并合并相同记录,添加到临时表中
delete from table where condition //从表中删除符合条件的记录,有重复的全部删除.
insert into table select * from #temp //将临时表中的记录重新添加到表中
这样行吗?
使用临时表的方法:
2.使用临时表
select distinct * into #temp from table where condition //将查询符合条件的记录并合并相同记录,添加到临时表中
delete from table where condition //从表中删除符合条件的记录,有重复的全部删除.
insert into table select * from #temp //将临时表中的记录重新添加到表中
当我输入 condition 时,删除不了,因为这个condition指到了两条一样的记录.