首页 新闻 搜索 专区 学院

数据库大神来帮我下,一个数据库的问题

0
悬赏园豆:15 [已解决问题] 解决于 2012-11-24 11:53

现在有一个数据库问题,需要在数据库循环一个查出来的数据集(id集合),然后再做每一个id进行相对应的判断做操作。不知道怎么写这些东西,在网上看的循环基本上都类似于C#中的for,下面我把需求简单的说一下,希望各位大神指点一二。

在数据表kh中取到id,然后在kh_re表中查看他们的数据,找到最大的addtime,跟今天的系统时间做比较,若超过15天。就做修改操作。

 

这个是每天执行一次的,放在作业里面的。

我的代码人生的主页 我的代码人生 | 初学一级 | 园豆:7
提问于:2012-11-24 10:47
< >
分享
最佳答案
0

在数据表kh中取到id,然后在kh_re表中查看他们的数据,找到最大的addtime,跟今天的系统时间做比较,若超过15天。就做修改操作。

 

 

找到最大的addtime 找到每个id的最大时间,还是所有记录中的最大时间?

 

修改操作,是修改的哪个表?

收获园豆:15
chenping2008 | 大侠五级 |园豆:9836 | 2012-11-24 10:57

每个id最大的addtime,然后和系统时间比较,修改kh表的数据

我的代码人生 | 园豆:7 (初学一级) | 2012-11-24 10:59

@我的代码人生: 给你做了一个小实例:

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 | 园豆:9836 (大侠五级) | 2012-11-24 11:12

@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附近有语法错误  我没发现有错啊,还望大神指导

我的代码人生 | 园豆:7 (初学一级) | 2012-11-24 11:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册