这条记录是重复的,有两条一样的记录。这个表没有任何约束,主键等。当删除时总提示“键列信息不足或不正确,更新影响更多的行”。其他的记录则可以删除。这是怎么回事?
---------------------------------------------------------------
你用什么命令呀?
---------------------------------------------------------------
那你用distinct命令将数据迁到其他表,再移回来。
使用 DISTINCT 消除重复项
DISTINCT 关键字可从 SELECT 语句的结果中除去重复的行。如果没有指定 DISTINCT,那么将返回所有行,包括重复的行。例如,如果在 titleauthor 中选择所有作者 ID 时未使用 DISTINCT,那么将会返回下列行(其中包括一些重复的行):
USE pubs
SELECT au_id
FROM titleauthor
下面是结果集:
au_id
-----------
172-32-1176
213-46-8915
213-46-8915
238-95-7766
267-41-2394
267-41-2394
274-80-9391
409-56-7008
427-17-2319
472-27-2349
486-29-1786
486-29-1786
648-92-1872
672-71-3249
712-45-1867
722-51-5454
724-80-9391
724-80-9391
756-30-7391
807-91-6654
846-92-7186
899-46-2035
899-46-2035
998-72-3567
998-72-3567
(25 row(s) affected)
而使用了 DISTINCT 后,就能够除去重复项,而只查看唯一的作者 ID:
USE pubs
SELECT DISTINCT au_id
FROM titleauthor
下面是结果集:
au_id
-----------
172-32-1176
213-46-8915
238-95-7766
267-41-2394
274-80-9391
409-56-7008
427-17-2319
472-27-2349
486-29-1786
648-92-1872
672-71-3249
712-45-1867
722-51-5454
724-80-9391
756-30-7391
807-91-6654
846-92-7186
899-46-2035
998-72-3567
---------------------------------------------------------------
select * into #temp from table where ........ --条件选出那两条
delete table where.......
insert into table
select top1 * from #temp
---------------------------------------------------------------
TO zhs126 (胖哥)
可视化工具下,将表打开后 点击上方的“SQL”
将SQL语句换为:
delete from yourtablename where field1='value1'
这里: yourtablename是你的表名 field1是一个字段名,value1是该字段的值
---------------------------------------------------------------
你在MMC中删除时,因为它要去找能确定你要删除的记录的条件,
就象
delect table where aa=xx and bb=YY
但是这个条件在表中有两条记录,所以系统认为你的条件不充分,所以它不知道应该把两条中的哪一条删除,所以出现上面的提示。
TRY:
select * into #temp from table where ........ --条件选出那两条
delete table where.......
insert into table
select top1 * from #temp
---------------------------------------------------------------
你在企业管理器里面删除某条记录时,实际相当于执行了delete语句。问题就在这里:
delete 表 where 条件
这个条件没法写,因为你的用意是删除一条,而任何条件都不能保证仅删除此条。
可参考 CrazyFor(Fan) 的方法