資料庫怎麼查重復
『壹』 如何查找資料庫中的重復數據
實現方式如下:
DimcnnAsObject,rsAsObject,sql$,i&,s$
Setcnn=CreateObject("ADODB.Connection")
cnn.Open"Provider=Microsoft.Jet.Oledb.4.0;dataSource="&ThisWorkbook.Path&"排課數據.mdb"
SQL="Select星期&節&班級,count(星期&節&班級)from排課where星期isnotnullgroupby星期&節&班級havingcount(星期&節&班級)>1"
Setrs=CreateObject("ADODB.Recordset")
rs.OpenSQL,cnn,1,3
Ifrs.RecordCountThen
Fori=1Tors.RecordCount
s=s&vbCrLf&"星期"&rs.Fields(0)&"班,重復次數:"&rs.Fields(1)
rs.MoveNext
Next
MsgBox"有"&rs.RecordCount&"條記錄重復:"&s
Else
MsgBox"沒有發現重復記錄"
EndIf
rs.Close
cnn.Close
Setrs=Nothing
Setcnn=Nothing
EndSub
1。刪除全部重復記錄(慎用)
Delete 表 Where 重復欄位 In (Select 重復欄位 From 表 Group By 重復欄位 Having Count(*)>1)
2。保留一條(這個應該是大多數人所需要的 ^_^)
Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)
註:此處保留ID最大一條記錄
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)
『貳』 如何查找和刪除資料庫中的重復數據
法一:
用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);
『叄』 如何查找資料庫中的重復數據
1、查找表中多餘的重復記錄,重復記錄是根據單個欄位(peopleId)來判斷
select * from peoplewhere peopleId in (select peopleId from people group by peopleId having count (peopleId) > 1)
2、刪除表中多餘的重復記錄,重復記錄是根據單個欄位(peopleId)來判斷,只留有rowid最小的記錄
delete from peoplewhere peopleId in (select peopleId from people group by peopleId having count (peopleId) > 1)and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、查找表中多餘的重復記錄(多個欄位)
select * from vitae awhere (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having
(3)資料庫怎麼查重復擴展閱讀
FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。在FROM子句中最多可指定256個表或視圖,它們之間用逗號分隔。
在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列所屬的表或視圖。
例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應使用下面語句格式加以限定:
SELECTusername,citytable.cityid
FROMusertable,citytable
WHEREusertable.cityid=citytable.cityid
在FROM子句中可用以下兩種格式為表或視圖指定別名:
表名 as 別名
表名 別名
『肆』 怎麼查看資料庫表中某個欄位的值有哪些重復記錄
下面以 sqlserver資料庫為例進行說明。
select * from TableA where b in (select b from TableAgroup by b having count(b) > 1)
這樣就列舉出了b欄位所有的重復數據,可以根據對應的行號,取得位於第幾行。
如果要查詢a欄位或者c欄位重復數據,可以相應的把上面的b欄位替換成a欄位或c欄位即可。
舉例:
1、創建表student
這樣就查出名字重復列,以及行號id。
(4)資料庫怎麼查重復擴展閱讀:
1. sqlserver其他相關的一些查詢:
(1)刪除表中多餘的重復記錄,重復記錄是根據單個欄位(peopleId)來判斷,只留有rowid最小的記錄
delete from people where peopleId in
(select peopleId from people group by peopleId having count(peopleId) > 1) and
rowid not in (select min(rowid) from people group by peopleId having count(peopleId)>1)
(2)查找表中多餘的重復記錄(多個欄位)
select * from vitae a where (a.peopleId,a.seq) in
(select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
(3)查找表中多餘的重復記錄(多個欄位),不包含rowid最小的記錄
select * from vitae a where (a.peopleId,a.seq) in
(select peopleId,seq from vitae group by peopleId,seq havingcount(*) > 1) and
rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
2. SQL語言元素
1、子句,是語句和查詢的組成部分。
2、表達式,可以生成標量值,也可以生成由列和行數據組成的表。
3、謂詞,指定可以評估為SQL三值邏輯(3VL)(真/假/未知)或布爾真值的條件,用於限制語句和查詢的效果,或用於更改程序流。
4、查詢,根據特定條件檢索數據。這是SQL的一個重要元素。
語句可能對架構和數據產生持久影響,或者可能控制事務,程序流,連接,會話或診斷。
SQL語句還包括分號(「;」)語句終止符。雖然並非每個平台都需要,但它被定義為SQL語法的標准部分。在SQL語句和查詢中通常會忽略無關緊要的空格,從而可以更輕松地格式化SQL代碼以提高可讀性。
『伍』 在oracle資料庫中,怎樣查詢出只有一個欄位的表的重復數據
方法一:可以通過group
by
進行分組。
sql:select
username,count(username)
from
tablename
grop
by
username;
解釋:以上sql就是通過分組函數讀取出tablename表中username的值和每個不同值的統計個數。
方法二:可以通過distinct函數
進行去重查詢。
sql:select
distinct
username
from
tablename
解釋:本sql就是查詢出所有的tablename表中的username值(不重復)。
『陸』 怎麼用SQL語句查資料庫中某一列是否有重復項
使用count 和distinct(去重)關鍵字可以查看資料庫某列是否有重復項。例如:
select count(discinct(colunmname)) from table_name;
如果上述查詢統計結果大於count(colunmname),則代表這一列有重復項。
(6)資料庫怎麼查重復擴展閱讀
SQL SELECT DISTINCT 語句用法介紹:
在表中,可能會包含重復值。這並不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。
關鍵詞 DISTINCT 用於返回唯一不同的值。
語法:
SELECT DISTINCT 列名稱 FROM 表名稱
使用 DISTINCT 關鍵詞,例如要從 "Company" 列中選取所有的值,我們需要使用 SELECT 語句:
SELECT Company FROM Orders
『柒』 sql查找某一欄位相同的所有數據
1、在我們的電腦上打開資料庫,這里新建一張含有重復數據的user表做示例。
『捌』 如何查詢資料庫中記錄重復的次數
使用group進行分組來實現。
例句:
select a,count(*) from table group a ;
顯示的結果,a就是重復的值,count(*)就是重復的次數。
該SQL在Oracle、Sql Server等資料庫都適用。
若要篩選重復幾次的重復值,則可對sql進行變動。
比如要顯示重復3次以及3次以上的資料,
例句:
select a,count(*) from table group a having count(*)>=3;
『玖』 怎樣查詢資料庫中重復的數據
一般來講查詢數據中有重復的記錄,首先要確定"重復"的定義,例如單欄位重復、多欄位組合重復等,然後再根據"重復"的定義進行分組計數,組計數大於1的即為有重復的記錄。
下面舉個例子供參考:
有雇員表(工號,姓名,身份證號碼)
其中欄位"身份證號碼"因未設置唯一索引,存在重復的情況,現要求檢索出身份證有重復的員工資料,SQL實現語句如下
selecta.*from雇員a,
(select身份證號碼from雇員groupby身份證號碼havingcount(*)>1)b
wherea.身份證號碼=b.身份證號碼;
『拾』 如何用sql資料庫查詢重復數據語句
試試用group by ,重復的應該就在一起