Access交流中心

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

新人求助:update 2个表连接查询更新,加时间间隔判断

jerry  发表于:2019-05-22 14:46:29  
复制

表A:企业信息 client_info  主键:ComID,其他用到:UserID

表B:拜访信息 client_visit 主键:ID,其他用到:ComID,intime,

两个表的 ComID是一致的,就是一个单位只有一个ComID,intime是拜访时间;

要实现功能,拜访时间距离现在已经超过90天的单位userID=>0;

写的语句如下:

sql="update client_info AS A INNER JOIN client_visit AS B ON A.ComID=B.ComID set A.UserID=0 where DateDiff("d",B.intime,now())>90"

错误应该是在 DateDiff("d",B.intime,now())>90 这里,改成1=1的话,client_info全部会更新,不会找特定的。

请教大家,应该怎么改才行呢

 

Top
jerry 发表于:2019-05-23 08:57:00
没有大神来帮忙解答下吗

jerry 发表于:2019-05-23 11:02:14
ASP+ACCESS的

jerry 发表于:2019-05-24 11:43:51
改进了下,因为要实现功能如下:
1、对照client_info ,判断Client_visit里面没有出现过的ComID,直接set UserID=0;
2、如果 Client_visit有出现过,判断最新的一条记录的拜访时间intime(或者同一个comID列出来比较最新的时间intime?),如果距离现在已经超过90天的单位 set UserID=0;

前面没考虑清楚,写的语句如下:

sql="update client_info AS A LEFT JOIN (select * from client_visit where id in(select max(id) from client_visit group by comid) AS B ON A.COMID=B.COMID set A.userid=0 where DateDiff('d',B.intime,now())>90 or B.ComID is null"


请教大神这句更新要怎么改呢??



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