sql刪除重復的記錄
『壹』 sql中如何刪除重復數據
select
欄位1,欄位2,欄位3
from
table
group
by
欄位1,欄位2,欄位3
having
count(*)>1
用上邊這句能找出所有重復的數據
欄位1,2,3你替換成你表裡的欄位名,如果有更多欄位的話,你就繼續添加,最後group
by的時候不要忘記了
刪除的時候要建立一個臨時表
create
table
new_table
as
select
欄位1,欄位2,欄位3
from
old_table
group
by
欄位1,欄位2,欄位3;
然後刪除原表數據
truncate
table
old_table;
然後把臨時表數據反插回去
insert
into
new_table
select
*
from
old_table;
『貳』 sql刪除重復數據且只保留一條
這個簡單,凡是重復的保留一個就可以了,是這個意思吧。
那麼就是 select min(id) from table group by title這樣的就能查出來每個title的最小的id,就算有重復的,也能顯示出來最小的id,如果沒有重復,那麼這條語句也會得到唯一的id
然後where id not in(上面的語句)
這樣就可以找到所有的不在上面語句朝招范圍內的語句,比如id為2732,2733,2734這三條,那麼上面的語句查出來的id就是2732,下面這個not in能查出來的就是2733和2734,然後再用delete刪除就可以了。
當然min(id)也可以用max(id)效果是一樣的,只是保留的id變成了2734
不過這里有一個問題,那就是title欄位重復,整個行都重復嗎?如果能確認整行重復,那麼這條語句基本沒問題,如果不能確定,那麼就還需要再考慮才可以。
『叄』 sql查詢去掉重復記錄
1、打開要去掉重復數據的資料庫,這里新建一張含有重復數據的user表做示例,如下圖所示:
『肆』 如何用SQL語句刪除兩個表中相同的記錄
1,首先創建一個表,並在表中插入重復的記錄,如下圖所示。
『伍』 SQL裡面如何刪除重復的記錄
方法1 最簡單的方法,拿出唯一的記錄集,放入中間表。原表清空,再把數據導回來。數據少的話很快。
select distinct UPPER(Stu_ID),*from tableName
方法2 如果這個表特別大,導表的方法速度受不了的話:
找出所有重復記錄
select * from tableName where Stu_ID_UP in (
select Stu_ID_UPfrom (select UPPER(Sut_ID) Stu_ID_UP from tableName)
group by Stu_ID_UP
having count(Stu_ID_UP) > 1)然後人工查看一下這些數據,推測這些重復數據產生的原因,是輸入錯誤、代碼邏輯錯誤、還是業務邏輯錯誤。要是業務原因,那一定要跟業務部門談好解決方案,別刪完出狀況。
經過第2步的各種確認刪除方法後,開始刪~
保留rowid最小的記錄
delete from tableName a
where (a.Stu_ID) in (
select Stu_ID_UP
from (
select UPPER(Sut_ID) Stu_ID_UP
from tableName)
group by Stu_ID_UP
having count(Stu_ID_UP) > 1)
and rowid not in (select min(rowid)
from (select UPPER(Sut_ID) Stu_ID_UP from tableName)
group by Stu_ID_UP
having count(Stu_ID_UP) > 1)
哎這惡心的排版,這網頁裡面真難調~~~
『陸』 SQL語句怎麼刪除重復的數據
刪除重復的數據
delete
from
tb
where
id
not
in
(
select
id
from
(select
fileSize,fileName
,max(id)
id
from
tb
group
by
filesize,filename
)
a
)
現在完成了重復數據的刪除,主要是利用了找出某個分組中最大的那個id,其中包括了所有不重復的id,然後使用not
in將需要保留的排除。
『柒』 怎麼刪除SQL中重復的記錄
嘗試回答LZ的問題,僅供參考:
1、對於這種要求,必須保證表中有主鍵或者唯一索引,或者某列數據不能重復。只有這樣,才可能使用一句SQL來實現。否則只能考慮其它辦法。下面的語句,假定BB列是不重復的,刪除後保存BB列值最大的那條記錄。
delete
from
表
where
aa
in
(select
aa
from
表
group
by
aa
having
count(aa)
>
1)
and
bb
not
in
(select
max(bb)
from
表
group
by
aa
having
count(aa)
>
1);
2、有多種寫法:
delete
A
from
B
where
A.AA
=
B.AA
delete
A
from
A,B
where
A.AA
=
B.AA
delete
A
where
AA
in
(select
AA
from
B)
3、使用into關鍵字:
select
*
into
新表名
from
原表
4、取數據前3位,欄位必須是類似char類型,使用類似substring這樣的函數(SYBASE是substring,ORACLE是substr):
select
substring(欄位,1,3)
from
表名
『捌』 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中表裡面怎麼刪除重復數據
出現這種情況的原因是你的表沒有建立關鍵字,當出現重復數據時,sqlserver自帶的圖形化工具刪除就會出現你出現的問題,即不能刪除也不能更新,你可以使用如下方法解決:
1、給表建立關鍵字,比如增加一列自增的欄位,這時候就可以刪除了,刪除完成後再刪除新增的列即可
2、不增加欄位,使用delete語句刪除,但是這種情況會刪除符合條件的數據,包括重復的數據
3、推薦使用1的方法
『拾』 SQL查詢,如何去除重復的記錄
首先,先說明一個問題。這樣的結果出現,說明系統設計是有問題的。
其次
刪除重復數據,你要提供你是什麼資料庫。
不同資料庫會有不同的解決方案。
關鍵字Distinct 去除重復,如下列SQL,去除Test相同的記錄;
1. select distinct Test from Table
2. 如果是要刪除表中存在的重復記錄,那就邏輯處理,如下:
3. select Test from Table group by Test having count(test)>1
4. 先查詢存在重復的數據,後面根據條件刪除
還有一個更簡單的方法可以嘗試一下:
select aid, count(distinct uid) from 表名 group by aid
這是sqlserver 的寫法。
如圖一在數據表中有兩個膀胱沖洗重復的記錄。