帮忙想条SQL

比如说一张表:
  id     name    createtime
   1     小明    2009-11-02
   2     小明    2009-11-01
   3     小王    2009-11-05
我想通过一条SQL查出每个人createtime最大的那条记录,查询结果:
  id     name    createtime
   1     小明    2009-11-02
   3     小王    2009-11-05

怎么写SQL
问题补充:
我用的ORACLE数据库,需要把id,name,createtime字段都显示出来
问题补充:
问题没说清楚,再补充一下:
这实际上是一张关系表,ID是这张表的主键,不是这个人的ID。
  id     name    lesson   studytime
   1     小明      java     2009-11-02
   2     小明      java     2009-11-01
   3     小王      java     2009-11-05

这样写应该能更清楚一些,我想查出每个人最新一次学习的记录,结果如下:
  id     name    lesson   studytime
   1     小明      java     2009-11-02
   3     小王      java     2009-11-05

感谢大家!

作业。??????

select max(createtime) from tb group by name

id name createtime
1 小明 2009-11-02
2 小明 2009-11-01
3 小王 2009-11-05
我想通过一条SQL查出每个人createtime最大的那条记录,查询结果:
id name createtime
1 小明 2009-11-02
3 小王 2009-11-05

select id,name, max(createtime) from table group by name

SELECT createtime FROM A WHERE A.createtime =(select max(createtime ) from B where A. id=B.id and A.name=B.name)

select name,max(createtime) from [Table] group by name 就可以了,结果是名字和时间

select name,max(createtime) from [Table] group by name

呵呵~好搞笑哦~我写的【table】……它给我屏蔽掉了…… :cry: 直接给去掉了55555555555再试试【aa】

是英文的[table]就给……没有了·

在这里也是关键字 :cry:

我建了表stu,如下语句可以,其实和上面的是一样的
[code="sql"]select name, max(createtime) from stu group by name [/code]

select name,MAX(date) from table1 group by name;

select name,MAX(date) from table group by name;

我写的table怎么没有被屏蔽掉?

select id,name, max(createtime) from table group by name

select id,name,max(createtime) from table group by name

select id,name,createtime
from table t
where (t.name,t.createtime) in
( select s.name,max(s.createtime) from table s group by s.name
)

select distinct t1.id,t1.name,t2.createtime from yourtable t1
inner join (select name,max(createtime) createtime from yourtable group by name) t2
on t1.name=t2.name and t1.createtime=t2.createtime

select id,name,max(createtime) from tableName group by name

创建一个虚拟表
select t1.id,t1.name,t1.createtime from table t1,(select name,max(createtime) time from table group by name) t2 where t1.name=t2.name and t1.createtime=t2.time

我的根楼上一样,就不用发了。结果是对的。

[code="sql"]
select * from stu a where studytime in (select max(b.studytime) from stu b group by name )
[/code]
经测试正确

select * from t1 where createtime in(select max(createtime) from t1 group by name);

select t1.* from yourtable t1 where t1.createTime in(select max(c.createTime) from yourtable c group by c.name)

你看看,这样行不,我没有测试的

select id,stu,date from stu where date in (select max(date) from stu group by stu)

看过来好像都挺麻烦的!
用oracle里面的一个集合方法,我就照你的补充里面的数据表写了:
select id, name,lesson,studytime,max(studytime) over (partition by name order by studytime) from yourtable;
记着把yourtable换成你自己的表来执行