select max(id),url into #zhszty_ebook from zhszty_ebook
--先查詢到臨時表中
delete * from zhszty_book
--刪除原表數據,或進乾脆刪除原來的表
insert into zhsty_book select * from #zhsty_book
--向原因添加數據,id如果是自增的則不能夠直接添加,考慮重置一下後再添加。
如果原表的中的id沒有多大使用的話——我的意思是重新編寫id的話。
select distint url from zhszty_book
--只取出url並去掉重復值,清除原表數據後,然後再進行添加。
清除原表或添加不重復數據後,建產唯一索引:
create unique clustrede index IX_URL
on zhszty_book(url ASC);
建立唯一索引後不再能添加重復的url了!看看你們的資料庫分析師——對修選鍵還不建立一個唯一非聚集索引,重復是必然的!你們的資料庫分析師不合格啊!
㈡ sql資料庫中出現重復行數據,如何刪除這些重復記錄
示例
假設存在一個產品信息表Procts,其表結構如下:
CREATETABLEProcts(
ProctIDint,
ProctNamenvarchar(40),
Unitchar(2),
UnitPricemoney
)
表中數據如圖:
*fromProcts_tempdroptableProcts_temp
這樣就完成了對表中重復記錄的刪除。無論表有多大,它的執行速度都是相當快的,而且因為幾乎不用寫語句,所以它也是很安全的
㈢ sql刪除資料庫中重復的數據語句怎麼寫
你要先找到規律,並且有確定的限制條件。是否所有的重復數據都刪了只留一條?舊數據和新數據的界定是什麼?是某個時刻?那舊數據中有重復數據刪不刪?重復數據是指僅僅title欄位信息一樣?
如果是在工作上,刪除數據是一項很嚴謹的事,這個你必須要想清楚所有的條件情況,只是這樣幾句話,讓網友給個sql語句,直接用上去,害的是你自己。
也不知道你的資料庫具體是怎麼樣的,給個一般刪除重復數據的方法
select distinct * into #Tmp_aa from tableName 把不重復的找出來插入到臨時表
drop table tableName 刪掉原來的表
select * into tableName from #Tmp_aa 把臨時表插入到新建的tableName
drop table #Tmp_aa 刪掉臨時表
㈣ 在Mysql下如何刪除重復的數據~
首先先創建一個臨時表,然後將author表中無重復的數據拎出來,放進臨時表中。
create temporary table 表名
select distinct id,name,password
from author
然後將author表中的記錄全部刪除。
delete from author
最後將臨時表中的記錄插入author表中
insert into author (id,name,password)
select id,name,password
from 臨時表
㈤ 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資料庫表裡重復數據的問題
5、創建聯合主鍵
alter table 表名 add constraint pk_name_time primary key(name,time)
呵呵,我替賓士補充的,分給他就是了
㈦ 求刪除SQL資料庫中某個表的重復數據
select distinct * into #tmp from tablename
drop table tablename
select * into tablename from #tmp
drop table #tmp
利用臨時表進行刪除,把tablename改成你的表名就行了。
㈧ sql資料庫刪除重復記錄
delete from table where id not in
select min(id) from table group by name,url(如果有其他行辨別那麼也在這里加上)
我保留的是id最小的行,你也可以留最大的行
我沒辦法加括弧,寫了子查詢加了括弧就發不上來
㈨ 如何查找和刪除資料庫中的重復數據
法一:
用Group
by語句
此查找很快的select
count(num),
max(name)
from
student
–查找表中num列重復的,列出重復的記錄數,並列出他的name屬性group
by
numhaving
count(num)
>;1
–按num分組後找出表中num列重復,即出現次數大於一次delete
from
student(上面Select的)這樣的話就把所有重復的都刪除了。—–慎重法二:當表比較大(例如10萬條以上)時,這個方法的效率之差令人無法忍受,需要另想辦法:—-
執行下面SQL語句後就可以顯示所有DRAWING和DSNO相同且重復的記錄SELECT
*
FROM
EM5_PIPE_PREFABWHERE
ROWID!=(SELECT
MAX(ROWID)
FROM
EM5_PIPE_PREFAB
D
–D相當於First,SecondWHERE
EM5_PIPE_PREFAB.DRAWING=D.DRAWING
ANDEM5_PIPE_PREFAB.DSNO=D.DSNO);—-
執行下面SQL語句後就可以刪除所有DRAWING和DSNO相同且重復的記錄DELETE
FROM
EM5_PIPE_PREFABWHERE
ROWID!=(SELECT
MAX(ROWID)
FROM
EM5_PIPE_PREFAB
DWHERE
EM5_PIPE_PREFAB.DRAWING=D.DRAWING
ANDEM5_PIPE_PREFAB.DSNO=D.DSNO);法一:
用Group
by語句
此查找很快的select
count(num),
max(name)
from
student
–查找表中num列重復的,列出重復的記錄數,並列出他的name屬性group
by
numhaving
count(num)
>;1
–按num分組後找出表中num列重復,即出現次數大於一次delete
from
student(上面Select的)這樣的話就把所有重復的都刪除了。—–慎重法二:當表比較大(例如10萬條以上)時,這個方法的效率之差令人無法忍受,需要另想辦法:—-
執行下面SQL語句後就可以顯示所有DRAWING和DSNO相同且重復的記錄SELECT
*
FROM
EM5_PIPE_PREFABWHERE
ROWID!=(SELECT
MAX(ROWID)
FROM
EM5_PIPE_PREFAB
D
–D相當於First,SecondWHERE
EM5_PIPE_PREFAB.DRAWING=D.DRAWING
ANDEM5_PIPE_PREFAB.DSNO=D.DSNO);—-
執行下面SQL語句後就可以刪除所有DRAWING和DSNO相同且重復的記錄DELETE
FROM
EM5_PIPE_PREFABWHERE
ROWID!=(SELECT
MAX(ROWID)
FROM
EM5_PIPE_PREFAB
DWHERE
EM5_PIPE_PREFAB.DRAWING=D.DRAWING
ANDEM5_PIPE_PREFAB.DSNO=D.DSNO);