比如说一张表:
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换成你自己的表来执行