有表t1
数据如下:
怎么得到如下数据
如果几条数据有name相同的,就根据time来取最前面一条记录就可以了
这个问题第1个回答:
SQL code
这个问题第2个回答:
SQL code
这个问题第3个回答:
SQL code
(爱新觉罗.毓华 2007-10-23于浙江杭州)
/*
数据如下:
数据如下:
我们在查询数据时,经常会使用distinct去重,但使用distinct只能去除所有查询列都相同的记录,如果所查询列中有一个字段值不同,distinct是无法去重的。但我们还想要实现这样的效果,这时我们可以用partition by。
1.例如,我们新建一张学生成绩表。
2.插入一些测试数据。
3.例如我们需要查询每个科目不同的分数,这时候可以用到distinct:
4.但是我们把需求再加一点,需要查询每个科目排名第一的学生信息,这时候就需要用到partition by:
PS:MySQL5.6不支持partition by
此时我们发现,并且第一的小明同学的英语成绩没有被查询出来,接着优化:
用rownum就可以实现的select * from table where rownum=1
rownum是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)