出现这种情况的原因是你的表没有建立关键字,当出现重复数据时,sqlserver自带的图形化工具删除就会出现你出现的问题,即不能删除也不能更新,你可以使用如下方法解决:
1、给表建立关键字,比如增加一列自增的字段,这时候就可以删除了,删除完成后再删除新增的列即可
2、不增加字段,使用delete语句删除,但是这种情况会删除符合条件的数据,包括重复的数据
3、推荐使用1的方法
② sql数据库删除重复记录
delete from table where id not in
select min(id) from table group by name,url(如果有其他行辨别那么也在这里加上)
我保留的是id最小的行,你也可以留最大的行
我没办法加括号,写了子查询加了括号就发不上来
③ sql查询去掉重复记录
1、打开要去掉重复数据的数据库,这里新建一张含有重复数据的user表做示例,如下图所示:
④ sql多条件,删除相同数据
明白了,可以参考如下教程:
用SQL语句,删除掉重复项只保留一条
在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleName in (select peopleName from people group by peopleName having count(peopleName) > 1)
and peopleId not in (select min(peopleId) from people group by peopleName having count(peopleName)>1)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
6.消除一个字段的左边的第一位:
update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'
7.消除一个字段的右边的第一位:
update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'
8.假删除表中多余的重复记录(多个字段),不包含rowid最小的记录
update vitae set ispass=-1
where peopleId in (select peopleId from vitae group by peopleId
⑤ SQL语句怎么剔除多个条件重复数据
如下面的语句可以查询
empid(员工工号)
重复(大于
1
次)的纪录
select
empid,
count(*)
from
employee
group
by
empid
having
count(*)
>
1;
还可以用下面的语句查询重复员工的详细记录
select
*
from
employee
where
empid
in
(select
empid
from
employee
group
by
empid
having
count(*)
>
1)
;
⑥ 用sql语句怎么删除表中重复数据
使用Delete
表名
[Where
逻辑表达式]
作用:删除表中符合Where
子句指定条件的数据行
如:(删除表delTest,列val1重复的一行[数据库中为整行删除])
Use
数据库名
Go
Delete
delTest
Where
val1='aaa'
Go
【酷_酷_币】为您服务...
⑦ SQL语句查询 如何删除重复多余的数据
这个是SQL中distinct的典型用法:
1)从字面意思就可以了解到:
distinct
[dis'tiŋkt]
adj.
明显的;独特的;清楚的;有区别的
2)在SQL中用distinct来消除重复出现的字段值。
使得每个字段值只出现一次。
具体用法如下:
select
distinct
字段名
from
表;
distinct
字段名
意思就是只显示一次该字段名
一般情况下和order
by
结合使用,这样可以提高效率。
所以这个问题的答案是:select
distinct
1,2,3,4
from
表;
1,2,3,4分别代表第一,二,三,四列的字段名,我猜测可能第一列就是每个人的ID,
这样你把重复的ID过滤留下一个,估计就是你想要的结果了。
希望我的回答能让您满意。
⑧ sql去除重复的项
distinct
b,a,c
------是将b
a
c完全相的记录只取一条,你的数据里根本没有完全相同的记录,所以会全部输出;
你要的数据可以用下面的sql
select
*
from
(select
t.*,row_number()
over(partition
by
b
order
by
b)
numid
from
table
t)
a
where
a.numid=1;
⑨ sql删除数据库中重复的数据语句怎么写
你要先找到规律,并且有确定的限制条件。是否所有的重复数据都删了只留一条?旧数据和新数据的界定是什么?是某个时刻?那旧数据中有重复数据删不删?重复数据是指仅仅title字段信息一样?
如果是在工作上,删除数据是一项很严谨的事,这个你必须要想清楚所有的条件情况,只是这样几句话,让网友给个sql语句,直接用上去,害的是你自己。
也不知道你的数据库具体是怎么样的,给个一般删除重复数据的方法
select
distinct
*
into
#Tmp_aa
from
tableName
把不重复的找出来插入到临时表
drop
table
tableName
删掉原来的表
select
*
into
tableName
from
#Tmp_aa
把临时表插入到新建的tableName
drop
table
#Tmp_aa
删掉临时表
⑩ sql查询问题 根据条件去掉重复数据
select
*
from
table
where
analyser='能检中心'
union
select
*
from
table
where
coalcode
not
in
(select
coalcode
from
table
where
analyser='能检中心')