SQL语句 之前有关问题延伸

SQL语句 之前问题延伸
EMPTable
id name age gender createdate 
1 张三 15 男 2011-12-5
2 张三 16 男 2011-12-6
3 张三 15 男 2011-12-9
4 李四 14 女 2011-12-3
5 李四 14 女 2011-12-15


查询 某人 最后一次创建的时间.(条件是姓名和年龄,出来的结果以id排序)

现在出来id很乱.我直接在
select * from tb t whrre createtime=(select max(createtime) from tb where name=t.name amd age=t.age)后面加order by id 查不来也不对的.
我想知道数据库循环怎么会把id打乱了.什么原理.

正确显示:
id name age gender createdate
3 张三 15 男 2011-12-9
2 张三 16 男 2011-12-6
5 李四 14 女 2011-12-5


之前感谢
ssp2009 
fredrickhu

------解决方案--------------------
SQL code

select a.* 
from EMPTable a
inner join
(select name,age,max(createdate) mcreatedate
from EMPTable
group by name,age) b
on a.name=b.name and a.age=b.age and a.createdate=b.mcreatedate
order by a.id