| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1879 人关注过本帖
标题:表中只有某二列相同(报名序号,姓名工)其它都不相同的重复记录,我想把只 ...
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:27 
表中只有某二列相同(报名序号,姓名工)其它都不相同的重复记录,我想把只取一条记录,能用select DISTINCT子句?
FoxPro入门手册(2014第四次修订水印版)中:select 语句中对重复行的介绍:
重复行,是指所有结果列的值都完全相同的行, 只要有一列的值不同, 就不算重复行。

现有表中报名序号,姓名相同的,其它几列不同的重复记录,
如 51016001 张三 90 80  70
   51016001  张三 100 90 50
1)现我只想取一条记录来统计报名人数,能否用 select distinct bmxh,xm from xx?
2)此条:SELECT bmd,COUNT(*) FROM (select DISTINCT bmxh,bmd FROM xk) GROUP BY bmd 为什么是语法错误?
 我先取掉重复后的表为中间表,然后再对中间表进分组统计.
 改为如下是正确的
select DISTINCT bmxh,bmd FROM xk into table ls1
select bmd,count(*) from ls1 group by bmd
当然select bmd,count(distinct bmxh) from xk group by bmd 是书上介绍的

[ 本帖最后由 sylknb 于 2015-9-24 11:10 编辑 ]
2015-09-24 10:28
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:3 
测试一下看看结果
2015-09-24 11:00
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
SELECT bmd,COUNT(*) FROM (select DISTINCT bmxh,bmd FROM [xk$]) GROUP BY bmd 此条语句在excel 2003中 oledb 查询中能正确运行。为什么在VFP9中
SELECT bmd,COUNT(*) FROM (select DISTINCT bmxh,bmd FROM xk) GROUP BY bmd 不能运行?
2015-09-24 11:12
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:3 
用唯一性索引再复制就OK了。
inde on allt(str(报名序号))+allt(姓名) to xhxm uniq
copy to abc
2015-09-24 14:18
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:3 
对 索引要唯一
2015-09-24 15:27
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:3 
select DISTINCT bmxh,bmd FROM xk into table ls1  &&OK,但只能显示bmxh,bmd行,其他的信息没显示

网上说的,可以在DISTINCT(),如
select DISTINCT(bmxh,bmd),数学 FROM xk into table ls1 &&错误的,我在VFP9和SQL2000上都是错误的。

还有的人说,在表上加个自增字段ID,
SELECT * FROM XK WHERE ID IN(SELECT MIN(ID) ID FROM XK GROUP BY bmxh,bmd)

难道,只有这样才能根据某几项相同的值,显示多个字段?
2015-09-24 17:47
中国龙王
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:484
专家分:283
注 册:2006-5-17
收藏
得分:3 
我现在对select  也是有点晕晕的...以前能用的现在不能用了.......改起来好烦人
其实就是现在的各种表达和设置要具体些,规则些和详细些了.不像以前的那么随便了
就好像以前可以用like 现在只能用==了....哈哈

不要为了打发无聊而做无聊的事!不要在虚幻的世界里做虚幻的事!
2015-09-24 20:25
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:3 
以下是引用sylknb在2015-9-24 11:12:43的发言:

SELECT bmd,COUNT(*) FROM (select DISTINCT bmxh,bmd FROM [xk$]) GROUP BY bmd 此条语句在excel 2003中 oledb 查询中能正确运行。为什么在VFP9中
SELECT bmd,COUNT(*) FROM (select DISTINCT bmxh,bmd FROM xk) GROUP BY bmd 不能运行?
在不同环境下select语法是有些区别的,不一定能够直接照搬照套。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-09-24 20:34
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:3 
以下是引用sylknb在2015-9-24 10:28:42的发言:

FoxPro入门手册(2014第四次修订水印版)中:select 语句中对重复行的介绍:
重复行,是指所有结果列的值都完全相同的行, 只要有一列的值不同, 就不算重复行。

现有表中报名序号,姓名相同的,其它几列不同的重复记录,
如 51016001 张三 90 80  70
   51016001  张三 100 90 50
1)现我只想取一条记录来统计报名人数,能否用 select distinct bmxh,xm from xx?
2)此条:SELECT bmd,COUNT(*) FROM (select DISTINCT bmxh,bmd FROM xk) GROUP BY bmd 为什么是语法错误?
 我先取掉重复后的表为中间表,然后再对中间表进分组统计.
 改为如下是正确的
select DISTINCT bmxh,bmd FROM xk into table ls1
select bmd,count(*) from ls1 group by bmd
当然select bmd,count(distinct bmxh) from xk group by bmd 是书上介绍的
你看书不仔细,嘿嘿。书上写了:FROM子句中的子查询后面是一定要有别名的。你不起个名字,当然就是语法错误了。你把这条语句改为:SELECT bmd,COUNT(*) FROM (select DISTINCT bmxh,bmd FROM xk) T1 GROUP BY bmd,就不会语法错误了。
2015-09-25 08:15
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
另外,楼主的第(1)个要求,可以用 select count(distinct bmxh) 总人数 from xx 来实现。
2015-09-25 08:23
快速回复:表中只有某二列相同(报名序号,姓名工)其它都不相同的重复记录,我想 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026912 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved