資料庫查找重復數據
『壹』 如何查找資料庫中的重復數據
實現方式如下:
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表GroupBy重復欄位HavingCount(*)>1)
2。保留一條(這個應該是大多數人所需要的^_^)
DeleteHZTWhereIDNotIn(SelectMax(ID)FromHZTGroupByTitle)
註:此處保留ID最大一條記錄
3、查找表中多餘的重復記錄(多個欄位)
select*fromvitaea
where(a.peopleId,a.seq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)4、刪除表中多餘的重復記錄(多個欄位),只留有rowid最小的記錄
deletefromvitaea
where(a.peopleId,a.seq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)
androwidnotin(selectmin(rowid)fromvitaegroupbypeopleId,seqhavingcount(*)>1)
『貳』 如何查詢資料庫中有相同欄位的數據
查看可用如下方法:
1、創建測試表,插入數據:
1
2
3
4
5
6
7
8
9
10
11
12
13
create table proct
(id int,
name varchar(10),
totol int)
insert into proct values (1,'香蕉',100)
insert into proct values (2,'橘子',67)
insert into proct values (3,'葡萄',89)
insert into proct values (4,'蘋果',235)
insert into proct values (5,'香蕉',77)
insert into proct values (6,'芒果',34)
insert into proct values (7,'葡萄',78)
insert into proct values (8,'梨',24)
表中數據如:
2、如果查詢name列有重復的數據,可執行sql語句:
1
select * from proct where name in (select name from proct group by name having COUNT(*)>1)
說明:查詢的結果就是香蕉和葡萄在表中是有重復的,要把香蕉和葡萄的所有記錄都查詢出來,結果如圖:
『叄』 SQL查詢語句,怎樣查詢重復數據
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);
『伍』 sql查找某一欄位相同的所有數據
1、在我們的電腦上打開資料庫,這里新建一張含有重復數據的user表做示例。
『陸』 怎麼查看資料庫表中某個欄位的值有哪些重復記錄
下面以 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。
(6)資料庫查找重復數據擴展閱讀:
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代碼以提高可讀性。
『柒』 怎樣查詢資料庫中重復的數據
一般來講查詢數據中有重復的記錄,首先要確定"重復"的定義,例如單欄位重復、多欄位組合重復等,然後再根據"重復"的定義進行分組計數,組計數大於1的即為有重復的記錄。
下面舉個例子供參考:
有雇員表(工號,姓名,身份證號碼)
其中欄位"身份證號碼"因未設置唯一索引,存在重復的情況,現要求檢索出身份證有重復的員工資料,SQL實現語句如下
selecta.*from雇員a,
(select身份證號碼from雇員groupby身份證號碼havingcount(*)>1)b
wherea.身份證號碼=b.身份證號碼;