| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1569 人关注过本帖
标题:vfp9下select 列名中如果含有聚合函数时,但不要分组查询,为什么
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:26 
vfp9下select 列名中如果含有聚合函数时,但不要分组查询,为什么
在VFP9下查询最高平均分的命令中:

SELECT name,xm,max(平均分) as zg FROM ls
为什么不能通过,提示要加group by
在VFP6下可行。
2015-05-12 11:48
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
基础知识,看帮助文件。

坚守VFP最后的阵地
2015-05-12 11:59
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用sdta在2015-5-12 11:59:37的发言:

基础知识,看帮助文件。
在帮助文件中哪里?
2015-05-12 12:21
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
哈哈,这个问题,我知道,我刚从6.0换到9.0,
所有参加的字段,都必须含有聚合函数,或者在GROUP中
2015-05-12 12:22
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
我不参加分组查询,只是在select 列名中用了聚合函数,为什么提示要group by
2015-05-12 12:29
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:0 
以下是引用sylknb在2015-5-12 11:48:23的发言:

在VFP9下查询最高平均分的命令中:

SELECT name,xm,max(平均分) as zg FROM ls
为什么不能通过,提示要加group by
在VFP6下可行。
VFP6.0是不标准的SQL,那就不要说它了。
对于SELECT name,xm,max(平均分) as zg FROM ls,如果你不分组,我反问你了,你想要什么的最大值?,如果只要表中平均分的最大值(不管是谁的),那就是直接这样SELECT max(平均分) as zg FROM ls,这样就不用 group by 。

如果要平均分的最大值的记录,就这样
SELECT a.* FROM ls a,(SELECT max(平均分) as 平均分 FROM ls) b WHERE a.平均分=b.平均分


[ 本帖最后由 kiff 于 2015-5-12 13:54 编辑 ]
2015-05-12 13:50
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
不为什么,VFP中就是这么约定的。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-05-12 13:50
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
如果要平均分的最大值的记录,就这样
SELECT a.* FROM ls a,(SELECT max(平均分) as 平均分 FROM ls) b WHERE a.平均分=b.平均分
上述代码的含义是咋样?

2015-05-12 14:53
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
同意6楼的说法,不分组的话你用聚集函数的意义在哪里?希望以下几段话能帮助到你。

图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

2015-05-12 14:56
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:10 
以下是引用sylknb在2015-5-12 14:53:23的发言:

如果要平均分的最大值的记录,就这样
SELECT a.* FROM ls a,(SELECT max(平均分) as 平均分 FROM ls) b WHERE a.平均分=b.平均分
上述代码的含义是咋样?
子查询得出最大平均分值,父查询列出与最大平均分值有相同值的全部记录。
2015-05-12 14:58
快速回复:vfp9下select 列名中如果含有聚合函数时,但不要分组查询,为什么
数据加载中...
 
   



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

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