使用count 和distinct(去重)關鍵字可以查看資料庫某列是否有重復項。例如:
select count(discinct(colunmname)) from table_name;
如果上述查詢統計結果大於count(colunmname),則代表這一列有重復項。
(1)查找資料庫中重復的數據擴展閱讀
SQL SELECT DISTINCT 語句用法介紹:
在表中,可能會包含重復值。這並不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。
關鍵詞 DISTINCT 用於返回唯一不同的值。
語法:
SELECT DISTINCT 列名稱 FROM 表名稱
使用 DISTINCT 關鍵詞,例如要從 "Company" 列中選取所有的值,我們需要使用 SELECT 語句:
SELECT Company FROM Orders
2. SQL查詢語句,怎樣查詢重復數據
1、第一步,打開資料庫,並創建一個包含重復數據的新用戶表,見下圖,轉到下面的步驟。
3. 怎麼查看資料庫表中某個欄位的值有哪些重復記錄
下面以 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。
(3)查找資料庫中重復的數據擴展閱讀:
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代碼以提高可讀性。
4. 如何查找和刪除資料庫中的重復數據
法一:
用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);
5. 如何查找資料庫中的重復數據
實現方式如下:
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)
6. excel表格怎麼檢查有重復的資料庫
方法/步驟
打開需要編輯的Excel表格。觀察表格發現有部分數據相同,需要將這些重復的數據用醒目的顏色標注出。首先,選中需要查找重復值的一列或某個區域。具體操作,如圖所示。
滑鼠單擊開始菜單,依次選擇樣式-條件格式-突出顯示單元格規則-重復值。
Ps:這些步驟適應於microsoft07版本。03版本的童鞋可以查看我的另一篇經驗貼「怎麼在Excel2003版中查找重復值」。
彈出重復值對話框,為包含以下類型的單元格設置格式。默認的選擇是重復值設置為淺紅填充色深紅色文本。點擊確定。
點擊確定。觀察Excel表格,是不是發現Excel表格中的那些重復值已經被標紅顯示了呢。顯示效果如圖所示。
5
將這些重復值成功標注後,您可以對數據進行其他處理,如篩選。具體操作步驟:點擊開始菜單-排序和篩選-篩選-按顏色排序-後單獨顯示重復數據。您也可以根據個人需要,刪除或者繼續其他編輯。