+ -
当前位置:首页 → 问答吧 → 一个简单的SQL语句

一个简单的SQL语句

时间:2011-12-10

来源:互联网

一个用户表(userid,姓名,性别),另外一个是考勤记录表(id,userid,考勤时间),需要找出用户表中所有用户的最后一次考勤记录

作者: zlydaaa   发布时间: 2011-12-10

SQL code
select * from a where a.name in(select a.name,max(b.time) from a inner join b
 on a.userid = b.userid group by a.name);

作者: hllfl   发布时间: 2011-12-10

SQL code
select a.姓名,max(b.time) from a inner join b
 on a.userid = b.userid group by a.name

作者: q465897859   发布时间: 2011-12-10

select a.userid,a.姓名,max(b.time) from a inner join b
 on a.userid = b.userid group by a.userid,a.姓名

作者: octwind   发布时间: 2011-12-10

可能我提的问题有错误,应该是这样:
一个用户表(userid,姓名,性别),另外一个是考勤记录表(id,userid,考勤时间,考勤卡号...),需要找出每个用户的最近一条考勤记录

作者: zlydaaa   发布时间: 2011-12-10

SQL code

select * from 考勤记录表 a where id = 
 (select top 1 id from 考勤记录表 b where userid = a.userid order by 考勤时间 desc)

作者: octwind   发布时间: 2011-12-10

还是不对的。

简单的说就是把 考勤记录表 中每个用户(根据考勤时间)最近的那条记录提取出来

作者: zlydaaa   发布时间: 2011-12-10

举例列举一下需要提取出来的列名吧

作者: octwind   发布时间: 2011-12-10

SQL code

select id,userid,考勤时间 from 考勤记录表 a where not exists(select 1 from 考勤记录表 where userid=a.userid and 考勤时间>a.考勤时间)

作者: pengxuan   发布时间: 2011-12-10

SQL code

--rtime 为考勤时间
select u.userid, u.uname, max(r.rtime) last_rtime  FROM USERS u
left join  records r on u.userid = r.userid
group by  u.userid, u.uname
order by u.userid





引用楼主 zlydaaa 的回复:
一个用户表(userid,姓名,性别),另外一个是考勤记录表(id,userid,考勤时间),需要找出用户表中所有用户的最后一次考勤记录

作者: badyflf   发布时间: 2011-12-10

SQL code

--用户表
1001    zhangsan    M
1002    lisi            F
1003    wangwu        M
--考勤表
1111    1001    2011-12-09 10:20:00.000
1112    1002    2011-12-09 10:20:00.000
1113    1002    2011-12-10 08:23:00.000
--查出结果
1001    zhangsan    2011-12-09 10:20:00.000
1002    lisi            2011-12-10 08:23:00.000
1003    wangwu            NULL



引用楼主 zlydaaa 的回复:
一个用户表(userid,姓名,性别),另外一个是考勤记录表(id,userid,考勤时间),需要找出用户表中所有用户的最后一次考勤记录

作者: badyflf   发布时间: 2011-12-10

SQL code
select
  a.*,b.考勤时间
from  
  a left join b
on
  a.userid=b.userid
and
  not exists(select 1 from b t where userid=b.userid and 考勤时间>b.考勤时间)

作者: fredrickhu   发布时间: 2011-12-10

--用户表
userid username serial sex
1001 zhangsan abcdjhg M
1002 lisi sdfdddd F 
1003 wangwu stfffff F
--考勤表
id userid ktime kcode FT  
1 1001 2011-12-09 10:20:00.000 01201001 0001
2 1002 2011-12-09 10:20:00.000 01201002 0001
3 1002 2011-12-10 08:23:00.000 01201002 0002
4 1003 2011-12-11 08:25:00.000 01201003 0001
--查出结果
userid username serial SEX ktime kcode FT
1001 zhangsan abcdjhg M 2011-12-09 10:20:00.000 01201001 0001
1002 lisi sdfdddd F 2011-12-10 08:23:00.000 01201002 0002 
1003 wangwu stfffff F 2011-12-11 08:25:00.000 01201003 0003 

作者: zlydaaa   发布时间: 2011-12-10

错了,应该改成

--用户表
userid username serial sex
1001 zhangsan abcdjhg M
1002 lisi sdfdddd F  
1003 wangwu stfffff F
--考勤表
id userid ktime kcode FT  
1 1001 2011-12-09 10:20:00.000 01201001 0001
2 1002 2011-12-09 10:20:00.000 01201002 0001
3 1002 2011-12-10 08:23:00.000 01201002 0002
4 1003 2011-12-11 08:25:00.000 01201003 0001
--查出结果
userid username serial SEX ktime kcode FT
1001 zhangsan abcdjhg M 2011-12-09 10:20:00.000 01201001 0001
1002 lisi sdfdddd F 2011-12-10 08:23:00.000 01201002 0002  
1003 wangwu stfffff F 2011-12-11 08:25:00.000 01201003 0001  

作者: zlydaaa   发布时间: 2011-12-10