现在有一个数据库问题,需要在数据库循环一个查出来的数据集(id集合),然后再做每一个id进行相对应的判断做操作。不知道怎么写这些东西,在网上看的循环基本上都类似于C#中的for,下面我把需求简单的说一下,希望各位大神指点一二。
在数据表kh中取到id,然后在kh_re表中查看他们的数据,找到最大的addtime,跟今天的系统时间做比较,若超过15天。就做修改操作。
这个是每天执行一次的,放在作业里面的。
在数据表kh中取到id,然后在kh_re表中查看他们的数据,找到最大的addtime,跟今天的系统时间做比较,若超过15天。就做修改操作。
找到最大的addtime 找到每个id的最大时间,还是所有记录中的最大时间?
修改操作,是修改的哪个表?
每个id最大的addtime,然后和系统时间比较,修改kh表的数据
@我的代码人生: 给你做了一个小实例:
USE testdb CREATE TABLE #kh ( id INT NOT NULL , num INT NOT NULL ) CREATE TABLE #kh_re ( id INT NOT NULL , logtime DATETIME NOT NULL ) INSERT INTO #kh ( id, num ) VALUES ( 1, -- id - int 1 -- num - int ) INSERT INTO #kh ( id, num ) VALUES ( 2, -- id - int 2 -- num - int ) INSERT INTO #kh_re ( id, logtime ) VALUES ( 1, -- id - int '2012-12-04 03:04:19' -- logtime - datetime ) INSERT INTO #kh_re ( id, logtime ) VALUES ( 1, -- id - int '2012-12-15 03:04:19' -- logtime - datetime ) INSERT INTO #kh_re ( id, logtime ) VALUES ( 2, -- id - int '2012-11-30 03:04:19' -- logtime - datetime ) SELECT * FROM #kh UPDATE #kh SET num = num + 1 FROM #kh h INNER JOIN ( SELECT k.id , MAX(r.logtime) logtime FROM #kh k INNER JOIN #kh_re r ON k.id = r.id GROUP BY k.id ) AS t ON h.id = t.id AND DATEDIFF(d, GETDATE(), t.logtime) > 15
@chenping2008:
1 UPDATE kh 2 SET Member = 'test' 3 FROM kh AS h INNER JOIN 4 (SELECT k.id, MAX(r.Addtime) AS addtime) 5 FROM kh AS k INNER JOIN 6 kh_re AS r ON k.id = r.cid 7 GROUP BY k.id) AS t ON h.id = t .id AND datediff(day, getdate(), t .addtime) < 5
我这样写的 为什么在FROM附近有语法错误 我没发现有错啊,还望大神指导