数据库中有个大表,需要查找其中的名字有重复的记录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 IntegerDim 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......代替了。
'还有一种方法就是新创建一个表,只包含 校区 与 学员 二个字段,使用新的表查询原来的表。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)