免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5148 | 回复: 18
打印 上一主题 下一主题

sql问题,分组查询功能的实现? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-28 23:08 |只看该作者 |倒序浏览
a                   b        c         d        e
11A0404011        3703370        [11A]H        [11A]D        1
11A0404011        3703370        [11A]F        [11A]H        2
11A04040111                [11A]A                3
11A04040111        3652067        [11A]R        [11A]A        8
11A04040111        3652067        [11A]C        [11A]R        0
11A04040111        3652067        [11A]D        [11A]C        1
11A04040111        3652067        [11A]H        [11A]D        3
11A04040111        3652067        [11A]F        [11A]H        0
如上,要查询出这样的记录:a字段分组且e字段最大的那一组记录,
select * from 表名 group by a having max(e)这样当然是错误的!
关键是怎么对分组后的记录如何判断条件。应该sql可以实现只是俺们这
疙瘩脑袋不行!!!

论坛徽章:
0
2 [报告]
发表于 2004-04-29 09:26 |只看该作者

sql问题,分组查询功能的实现?

select * from table_name
where a = select max(e) from table_name;

论坛徽章:
0
3 [报告]
发表于 2004-04-29 18:13 |只看该作者

sql问题,分组查询功能的实现?

谢谢doni,可能我原来的意思有些表达的不是很清楚,您的语句只是选出一条记录,而我所要的是一个记录集,即同一个a字段中最大e的那组记录集,
11A0404011   3703370 [11A]F [11A]H 2
11A04040111 3652067 [11A]R [11A]A 8这样的结果。
好象a = select max(e) from table_name这个地方也稍微有些问题:应该是e吧。还请赐教啊!!!

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-05-28 06:20:00
4 [报告]
发表于 2004-04-29 23:46 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-05-28 06:20:00
5 [报告]
发表于 2004-04-30 00:10 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2004-04-30 05:15 |只看该作者

sql问题,分组查询功能的实现?

建表如下:K
no a b
1 1 1
2 1 2
3 2 3
4 2 4
你需要选择出第2跟第4行。

SQL如下:
select * from k where b in(select max(b) from k group by a)

论坛徽章:
0
7 [报告]
发表于 2004-04-30 13:16 |只看该作者

sql问题,分组查询功能的实现?

谢谢各位的回答、oldunix:你的语句和我开始的错误一样,group后只能选择聚集函数max,count等等,这样的语句会报语法错误。您可以弄个表自已试试。songix我昨天最后用的就是这个语句,这个语句倒是没什么错,但有个问题,就是b这个字段不能相等,即为关键字,否则如果如下这样:
no a b
1 1 1
2 1 2
3 2 1
4 2 2 ,最后语句执行的结果还是4条全出来了,所以还是有些缺陷。不知是否有更好的方法啦。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-05-28 06:20:00
8 [报告]
发表于 2004-04-30 19:51 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
9 [报告]
发表于 2004-05-01 17:58 |只看该作者

sql问题,分组查询功能的实现?

绝对谢谢oldunix,这个语句倒是有点意思。只可惜我只是在access中尝试它告诉我语法是错误的,看来还是oracle功能强大些啊。我并不是在oracle上执行这个语句,只是找个地方问一下,待我找个环境试一下吧,成功后来报告一下。有没有其它的方法了呢?我一个朋友告诉我一个自联接的方法,好象效率太低,而且弄到我那个access2000的环境中总是不能正确执行,不知是不是我打错字啦,今天弄张纸抄回去执行得了。
哎,已经很久没有认真考虑过一个问题啦,惭愧惭愧。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-05-28 06:20:00
10 [报告]
发表于 2004-05-01 20:16 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP