出現這種情況的原因是你的表沒有建立關鍵字,當出現重復數據時,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='能檢中心')