我的一个SQL查询,我目前的结果如下 所有ID 初始值都是1 ID---newvalue----update
1-------5---------2008-9-10 10:10:50
1-------6---------2008-9-10 19:10:50
2-------2---------2008-9-10 12:19:59
3-------4---------2008-9-10 15:10:10
3-------5---------2008-9-10 20:08:40
ID 1在19:10:50 把值更改为了6 ID 2只改了一次 ID 3在20:08:40 把值更改为了5
我想最终查出的效果是同一个ID 在 当天 最后 一次修改只要是6 那就把这个ID排除,同时只查出ID最后一次修改的值 那最终效果应该是
2------2-----2008-9-10 12:19:59
3------5-----2008-9-10 20:08:40
就这么2条记录,有什么关键字 或方法能达到这要求~~?
我的是MYSQL数据库,我知道这里不是MYSQL,不过发现这个版块的理念比较强大,能用MYSQL的方式解决最好了~~
1-------5---------2008-9-10 10:10:50
1-------6---------2008-9-10 19:10:50
2-------2---------2008-9-10 12:19:59
3-------4---------2008-9-10 15:10:10
3-------5---------2008-9-10 20:08:40
ID 1在19:10:50 把值更改为了6 ID 2只改了一次 ID 3在20:08:40 把值更改为了5
我想最终查出的效果是同一个ID 在 当天 最后 一次修改只要是6 那就把这个ID排除,同时只查出ID最后一次修改的值 那最终效果应该是
2------2-----2008-9-10 12:19:59
3------5-----2008-9-10 20:08:40
就这么2条记录,有什么关键字 或方法能达到这要求~~?
我的是MYSQL数据库,我知道这里不是MYSQL,不过发现这个版块的理念比较强大,能用MYSQL的方式解决最好了~~
where not exists (
select * from tab
where id=a.id and update>a.update
)
and newvalue<>6
(
ID int,
newvalue int,
updatetime datetime
)
insert into #I
select 1,5,'2008-9-10 10:10:50' union all
select 1,6,'2008-9-10 19:10:50' union all
select 2,2,'2008-9-10 12:19:59' union all
select 3,4,'2008-9-10 15:10:10' union all
select 3,5,'2008-9-10 20:08:40'
select * from #I where updatetime in (
select MAX(updatetime) from #I group by id) and newvalue<>6
drop table #I
1-------5---------2008-9-10 10:10:50
1-------6---------2008-9-10 19:10:50
2-------2---------2008-9-10 12:19:59
3-------4---------2008-9-10 15:10:10
3-------5---------2008-9-10 20:08:40
这不是一张表 是我4张表查询后的结果
update 需要加[],即[update]
ID---KEY---createtime---updatetime----所属作业ID
1----k1----2008/8/7-----2008/8/7------zy4
2----k2----2008/8/7-----2008/8/7------zy4
3----k3----2008/8/7-----2008/8/7------zy4
4----k4----2008/8/7-----2008/8/7------zy3
13----k4----2008/8/7-----2008/8/7------zy4
14----k4----2008/8/7-----2008/8/7------zy1
swork:
ID---KEY---作业名称---布置者
zy1--k5----XX作业----XX老师
zy2--k6----SS作业----TT老师
zy3--k7----JJ作业----QQ老师
zy4--k8----OO作业----UU老师
changegroup:
ID--------问题ID-------修改者---------修改时间
1001-------1----------TT老师 --------2008-8-8 08:15:08
1002-------2----------TT老师 --------2008-8-8 09:50:01
1003-------3----------TT老师 --------2008-8-8 10:23:59
1004-------13----------QQ老师 --------2008-8-8 15:10:18changeitem:
ID--------groupid-----------field-------oldvalue---------newvalue
1----------1001---------------A------------1---------------4
2----------1001---------------B------------TT--------------TR
3----------1002---------------A------------1---------------6
4----------1003---------------A------------1---------------3
5----------1003---------------A------------3---------------2
6----------1004---------------A------------1---------------5
我的SQLselect i.ID,m.newvalue,c.修改时间from issue i,changeitem m,changegroup p,swork swhere m.field='A'AND p.ID=m.groupidAND s.ID=i.所属作业IDAND i.ID=p.问题IDAND s.作业名称='OO作业'AND date_format(c.修改时间,'%Y-%m-%e')='2008-8-8'再麻烦看看.....................
DECLARE @DataTable TABLE
(
ID INT,
newvalue VARCHAR(100),
[update] datetime
)INSERT @DataTable
SELECT 1, '5', '2008-9-10 10:10:50'
UNION ALL SELECT 1, '6', '2008-9-10 10:10:50'
UNION ALL SELECT 2, '2', '2008-9-10 12:19:59'
UNION ALL SELECT 3, '4', '2008-9-10 15:10:10'
UNION ALL SELECT 3, '5', '2008-9-10 20:08:40'SELECT a.* FROM @DataTable a
JOIN
(
SELECT ID, MAX([update]) AS [update] FROM @DataTable
WHERE ID NOT IN(SELECT ID FROM @DataTable WHERE newvalue = '6')
GROUP BY ID
)b ON a.ID = b.ID AND a.[update] = b.[update]