实现方式如下:
Dim cnn As Object, rs As Object, SQL$, i&, s$Set cnn = CreateObject("ADODB.Connection")
cnn.Open "Provider=Microsoft.Jet.Oledb.4.0data Source=" & ThisWorkbook.Path & "\排课数据.mdb"
SQL = "Select 星期&节&班级,count(星期&节&班级) from 排课 where 星期 is not null group by 星期&节&班级 having count(星期&节&班级)>1"
Set rs = CreateObject("ADODB.Recordset")
rs.Open SQL, cnn, 1, 3
If rs.RecordCount Then
For i = 1 To rs.RecordCount
s = s & vbCrLf & "星期" & rs.Fields(0) & "班,重复次数:" & rs.Fields(1)
rs.MoveNext
Next
MsgBox "有" & rs.RecordCount & "条记录重复:" & s
Else
MsgBox "没有发现重复记录"
End If
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub
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张表,其中有个order_number字段现在有这么1个需求:查询出order_numbe
r重复的所有记录.
我的想法以下:
将所有记录的order_number
取出
两张表。 如果表结构一样的话。
你可以使用
INTERSECT – 仅仅给出2个表都有的数据(去除重复记录)
来实现这个功能。
下面是例子代码:
这里的SQL,使用以下的测试表,与测试数据CREATE TABLE union_tab_1 (
id INT,
val VARCHAR(10)
)
CREATE TABLE union_tab_2 (
id INT,
val VARCHAR(10)
)
INSERT INTO union_tab_1 VALUES(1, 'A')
INSERT INTO union_tab_1 VALUES(2, 'B')
INSERT INTO union_tab_1 VALUES(3, 'C')
INSERT INTO union_tab_2 VALUES(1, 'A')
INSERT INTO union_tab_2 VALUES(1, 'A')
INSERT INTO union_tab_2 VALUES(2, 'B')
INSERT INTO union_tab_2 VALUES(4, 'D')
SQL> SELECT * FROM union_tab_1
2 INTERSECT
3 SELECT * FROM union_tab_2
ID VAL
---------- --------------------
1 A
2 B
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)