sql语句该怎么写,请帮忙

[复制链接]
查看11 | 回复4 | 2010-9-15 10:01:22 | 显示全部楼层 |阅读模式
比如有这么一个表,用来记录公司员工每天上班的打卡时间,比如:
name
date
time
tom
2010-09-14
8:00
mary
2010-09-14
8:02
John
2010-09-14
8:04
------等等----------
我现在想知道在mary前面打卡的那个人的打卡时间,这个sql语句该怎么写?
注意:上面那个表只是我随便举例,在mary前面的不确定是谁。

回复

使用道具 举报

千问 | 2010-9-15 10:01:22 | 显示全部楼层
基本思路-使用一个嵌套,首先执行嵌套里的操作,目的是要查出名字为"Mary"的人的记录,然后找到比她时间我早的所有记录,然后再这些记录中找到时间最大的记录就行了;SQL--select a.name,max(a.time) from 表名 a where a.time < (select name from 表名 where name = 'mary') order by a.time;
回复

使用道具 举报

千问 | 2010-9-15 10:01:22 | 显示全部楼层
MAX(TIME)这里需要对时间对不同SQL方言,要做适当转换,大致意思就是这样整出来的SELECT MAX(TIME)FROM tabWHERE time <(SELECT time FROM tab WHERE name = 'John' AND date = '2010-09-14')
回复

使用道具 举报

千问 | 2010-9-15 10:01:22 | 显示全部楼层
select t.name,max(t.time) from table where t.time<(select time from table where name='mary')
回复

使用道具 举报

千问 | 2010-9-15 10:01:22 | 显示全部楼层
查出时间小于john的时间的所有记录,然后查出这些记录里时间最大的那条就是你需要的了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行