回 帖 发 新 帖 刷新版面

主题:请教:VFP9.0 GROUP BY子句的用法

我原来用VFP7.0做的东西,内有SELECT查询语句,其中用到GROUP BY子句,很好用,比如有
姓名,性别,年龄,单位  四个字段,我GROUP BY 姓名,就可以把姓名重复的记录过滤掉,而且保留的唯一记录是记录号最大的,即后面的新纪录,而在VFP9.0中此语句报错,我不知如何再用它,特请教各位老师,先谢
我原来的语句select * from xxx where ?  into table 'yyy' group by 姓名

回复列表 (共6个回复)

沙发

group by 姓名,性别,年龄,单位

板凳

use a 
SET UNIQUE ON 
INDEX on dm TO a 
COPY TO aa 

以上代码在表aa不再有dm重复的值,不受版本限制!

另外:楼主要求记录号最大的,这个恐怕不妥,数据库表中的记录号不应该起这个作用,任何操作的结果集合都不应该和记录号有关!这个任何一本数据库书中都有讲的

3 楼

[quote]group by 姓名,性别,年龄,单位[/quote]
谢谢,如果4个字段都GROUP BY了,那还不如DISTINCT,我的目的是只排除姓名重复的记录,例如    
1 张三 男 50岁  合肥工业大学物理系
2 张三 男 55岁  合肥工业大学化学系
......
经过SELECT     GROUP BY 姓名后,第一条记录被过滤掉,第二条记录保存

4 楼

[quote]另外:楼主要求记录号最大的,这个恐怕不妥,数据库表中的记录号不应该起这个作用,任何操作的结果集合都不应该和记录号有关!这个任何一本数据库书中都有讲的[/quote]
谢谢,我不是要求记录号最大的,我的意思是,当姓名相同时,保留后面的记录,例如
张三2007年参加一个会议,登记了基本信息,2008年,2009年都如此,那我现在给张三发信,显然要使用2009年的信息,而李四可能2007年参加,2008年参加,2009年没有参加,那我给李四发信,显然使用2008年的信息,这样就是记录号最大的,在VFP7.0中,SELE 语句中加GROUP BY 姓名   很容易达到这个效果
SET UNIQUE ON,很好用,如果保存最下面的记录,可以先把它倒过来,谢谢
目的达到了,但group by还是不会用

5 楼

GROUP BY 子句指定一个或多个用来分组查询返回行的列。列引用自 SQL SELECT 语句列表,除聚集表达式之外,必须包含在 GROUP BY 子句中。

那是你不清楚GROUP BY 子句的用法,从VFP8.0以后就更改了,使之符合SQL标准

6 楼

加上
SET ENGINEBEHAVIOR 70  試試

我来回复

您尚未登录,请登录后再回复。点此登录或注册