设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3864|回复: 15
打印 上一主题 下一主题

[模块/函数] 如何从表中选出每类最大值的一条记录做更新?

[复制链接]
跳转到指定楼层
1#
发表于 2008-1-9 15:23:49 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
表1的字段:文件id    类型 .....   (文件id是主关键字)
表2的字段: id    次数   (表2id和表1文件id是一对多关系)
表2中有100条记录,共有5-15类
如何找出每类次数值最大的一条记录(每类最大次数的记录可能不止一条,但只取出一条),然后将该记录的次数值更改为0?
搞了几天都没搞出来,老出错。头都晕了,谁帮帮忙看看?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

16#
发表于 2008-1-10 18:07:15 | 只看该作者

看看这样行不行

UPDATE 表2 SET 表2.使用次数 = 0
WHERE (((表2.id) In (SELECT First(表2.id) AS id之第一条记录 FROM 表1 AS a INNER JOIN 表2 ON a.id = 表2.图片id
WHERE ((使用次数=(SELECT DISTINCT top 1 使用次数 FROM 表1 INNER JOIN 表2 ON 表1.id = 表2.图片id Where 大类=a.大类 Order By 使用次数 desc)))
GROUP BY a.大类)));

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
15#
发表于 2008-1-10 16:07:31 | 只看该作者
很抱歉,想不出更简单的方法,看看其它人是否有更简洁的方法。
14#
 楼主| 发表于 2008-1-10 15:50:34 | 只看该作者
有没有更简单一点的?
13#
发表于 2008-1-10 14:54:27 | 只看该作者
因为上面给出的查询是一个不可更新的查询,所以要转个弯。
1、先把上面的查询改为生成表查询,就是第一行改为SELECT a.大类, Max(b.id) AS id INTO JINGER,其它行内容不变。
2、再做一个更新查询:UPDATE 表2 INNER JOIN JINGER ON 表2.id=JINGER.id SET 表2.使用次数 = 0;
3、然后做个宏(或者用代码)依次执行这二个查询,再执行deleteobject删除那个JINGER临时表。用的时候只要运行宏就可以了。
12#
 楼主| 发表于 2008-1-10 14:09:44 | 只看该作者
那如何将找出的这几条记录做更新查询呢?使用次数更新为0。
11#
发表于 2008-1-10 10:16:21 | 只看该作者
SELECT a.大类, Max(b.id) AS id之Max
FROM [SELECT 表1.大类, Max(表2.使用次数) AS 使用次数之Max FROM 表1 INNER JOIN 表2 ON 表1.id = 表2.图片id GROUP BY 表1.大类;]. as a INNER JOIN [SELECT 表1.大类, 表2.id, 表2.使用次数 FROM 表1 INNER JOIN 表2 ON 表1.id = 表2.图片id ]. as b ON (a.使用次数之Max = b.使用次数) AND (a.大类 = b.大类)
GROUP BY a.大类
10#
 楼主| 发表于 2008-1-10 09:23:10 | 只看该作者
原帖由 huangqinyong 于 2008-1-9 17:19 发表

表设计有问题,见查询3


没看懂。查询3的连接是错的呀?
9#
 楼主| 发表于 2008-1-10 09:21:57 | 只看该作者
1、数据库里面是表1ID和表2的图片ID才是一对多关系,和你说的不一样
   对,是我失误了,是图片id。
2、演示表中的id对应的是表2中的id号(因为要找出的是表2中的记录。id是表2的主关键字。)

明白了吗?
8#
发表于 2008-1-9 19:19:18 | 只看该作者
原帖由 静儿 于 2008-1-9 15:23 发表
表1的字段:文件id    类型 .....   (文件id是主关键字)
表2的字段: id    次数   (表2id和表1文件id是一对多关系)
表2中有100条记录,共有5-15类
如何找出每类次数值最大的一条记录(每类最大次数的记录可能 ...



不但楼主头晕,我也晕了,反反复复来来回回看了差不多10分钟,愣是没看明白

1、数据库里面是表1ID和表2的图片ID才是一对多关系,和你说的不一样
2、在你想要结果的演示表里面,ID和大类完全没对上号(例如ID为282的大类在表1中应该是第1类而不是第10大类)

演示数据对于别人理解你的需求是很重要的哦,等你重新整理并详细描述后,我才能帮上忙了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-26 04:26 , Processed in 0.116494 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表