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.大类
因为上面给出的查询是一个不可更新的查询,所以要转个弯。
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临时表。用的时候只要运行宏就可以了。
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.大类)));