怎么去除mysql字段中的重复值

怎么去除mysql字段中的重复值,第1张

MySQL查询重复字段,及删除重复记录的方法

数据库中有个大表,需要查找其中的名字有重复的记录id,以便比较。如果仅仅是查找数据库中name不重复的字段,很容易:

SELECT min(`id`),`name` FROM `table` GROUP BY `name`

但是这样并不能得到说有重复字段的id值。(只得到了最小的一个id值)查询哪些字段是重复的也容易:

SELECT `name`,count(`name`) as count FROM `table` GROUP BY `name` HAVING count(`name`) >1 ORDER BY count DESC

但是要一次查询到重复字段的id值,就必须使用子查询了,于是使用下面的语句。

SELECT `id`,`name` FROM `table` WHERE `name` in (

SELECT `name`

FROM `table`

GROUP BY `name` HAVING count(`name`) >1)

但是这条语句在mysql中效率太差,感觉mysql并没有为子查询生成零时表。于是使用先建立零时表:

create table `tmptable` as (

SELECT `name`

FROM `table`

GROUP BY `name` HAVING count(`name`) >1)

这个用数据库 *** 作会好一些,用excel的话,数据不知道准确性如何;

1、先将姓名进行排序,并扩展到选定区域;

2、打开“数据”菜单下的“分类汇总”,设置属性

结果就是这样的:

3、把这两列复制到空的位置,粘贴的时候仅保留“值”

,利用筛选,查找包含“汇总”字眼的(如果直接筛选面积字段为0):

将筛选的这两列直接选中,复制到新建的excel中;

4、CTRL+H,将姓名中的“ 汇总”替换为空

结果就是这样的:

因为开始时存在单元为空的,汇总统计有些为空的也统计了,将这些删除就好了。

写的有些复杂,希望可以帮到你

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......代替了。

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


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

原文地址: http://outofmemory.cn/sjk/6652715.html

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

发表评论

登录后才能评论

评论列表(0条)

保存