Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]这个更新查询怎么做?

白桦林  发表于:2011-09-17 13:36:08  
复制

点击下载此附件

 

在附件中,目前表1中所有记录的[是否可以]字段的值都为"是"

我想建一个更新查询,

目的是当表1中的[日期1]的值早于表2中与其[学号]相同的[日期2]的值的最大值时,

把表1中该学号下的记录中的[是否可以]字段的值更改为"否"。

 

谢谢了!

 

Top
煮江品茶 发表于:2011-09-17 13:56:56
白桦林 发表于:2011-09-17 16:17:42

一楼给的实例我看了,是很实用

但没有更新查询!



煮茶论道 发表于:2011-09-17 17:09:35
UPDATE 表1 INNER JOIN 表2 ON 表1.id = 表2.id SET 表1.是否可以 = -1
WHERE (((表1.学号)=[表2].[学号]) AND ((表1.日期1)<DMax("日期2","表2")));


白桦林 发表于:2011-09-17 18:41:17

点击下载此附件

按照3楼的办法出现了问题

我的意思是要执行2005-4-29(表2中最后一条记录)以前的记录的更改

运行的结果是将2005-5-1的结果也更改了!



白桦林 发表于:2011-09-17 20:26:40

找出问题原因了:

三楼的方法问题出在只找出了表2的最大值

而我要更改的条件是表2中各学好学的最大值

是条件设置错误

那位朋友能帮我改下!!



都市侠影 发表于:2011-09-17 20:52:19

用嵌套的更新查询解决,查询语句:

UPDATE 表1 SET 是否可以 = False
WHERE 日期1<(SELECT MAX(日期2) AS 最大日期 FROM 表2 WHERE 表2.学号=表1.学号);
执行更新查询后的结果:



总记录:6篇  页次:1/1 9 1 :