SQL查询一个表中重复的名字

SQL查询一个表中重复的名字,第1张

总结:

两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

1、(1)对于第一种重复,比较容易解决,使用复制代码代码如下:select distinct * from tableName

(2)如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除,复制代码代码如下:

select distinct * into #Tmp from tableName

drop table tableName

select * into tableName from #Tmp

drop table #Tmp

2、假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集,复制代码代码如下:

select identity(int,1,1) as autoID, * into #Tmp from tableName

select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID

select * from #Tmp where autoID in(select autoID from #tmp2)

distinct 校区,学员 这个关键字只能查询出 校区和学员 二个字段的记录,不能查询其他字段的记录

需要其他的字段内容需要二步完成

用 VB6 的ADO 对象 做个例子,供参考

Dim cnn As New ADODB.Connection, Rs As New ADODB.Recordset, AA As Integer

Dim XQ() As String, XY() As String

'cnn 连接数据库略

'第一步 ,将 校区,学员---- 去重

Rs.Open "Select distinct 校区,学员 From 数据表名", cnn, 3, 2

AA = Rs.RecordCount   '得到去重后的记录总数

ReDim XQ(1 To AA), XY(1 To AA)

Dim K As Integer

Do While Not Rs.EOF

    K = K + 1

    XQ(K) = Rs!校区: XY(K) = Rs!学员   '将 校区,学员 自动存储在二个数组中

Rs.MoveNext

Loop

Rs.Close

Set Rs = Nothing

'第二步 就可以在 MSHFlexGrid1 控件得到你需要的字段记录

MSHFlexGrid1.Clear

MSHFlexGrid1.Visible = True

With MSHFlexGrid1

    .Cols = 6   '如果显示字段多,修改显示列的数据即可

    .Rows = 1 + AA

    .TextMatrix(0, 0) = "序号"

    .TextMatrix(0, 1) = "校区"

    .TextMatrix(0, 2) = "学员"

    .TextMatrix(0, 3) = "字段3"

    .TextMatrix(0, 4) = "字段4"

    .TextMatrix(0, 5) = "字段5"

    '..................  在这里继续添加其他列的名称

    For I = 1 To AA

        Rs.Open "Select * From 数据表名 Where 校区='" & XQ(I) & "' AND 学员='" & XY(I) & "'", cnn, 3, 2

        .TextMatrix(I, 0) = I

        .TextMatrix(I, 1) = Rs!校区

        .TextMatrix(I, 2) = Rs!学员

        .TextMatrix(I, 3) = Rs!字段3

        .TextMatrix(I, 4) = Rs!字段4

        .TextMatrix(I, 5) = Rs!字段5

        '..................  在这里继续添加其他列的数据

        Rs.Close

        Set Rs = Nothing

        Next I

End With

cnn.Close

Set cnn = Nothing

'由于你的图片看不清,所以用字段1、字段2、字段3......代替了。

'还有一种方法就是新创建一个表,只包含 校区 与 学员 二个字段,使用新的表查询原来的表。

很简单,无需使用高级函数即可实现,假设你的表是用户表,表中有姓名和电话两列:

select 姓名,电话,count(*) as '条数' from 用户表

group by 姓名,电话

having count(*)>1

即可找出用户姓名,电话,以及重复条数。

如果高级一点的,可以使用开窗函数,进行组内排名,比如使用rank函数也可以实现。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9937273.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存