mysql 分组group by排序取每条记录中,时间最大的一条记录
2019/10/10/17:35:39 阅读:2281 来源:谷歌SEO算法 标签:
SEO教程
本文章来给大家介绍在于mysql中利用分组group by排序来实现获取记录组中时间最大的记录实现方法,各位朋友可参考.
mysql 分组 group by,排序 取每条记录中,时间最大的一条记录,以下是 test 表,测试sql,代码如下:
- CREATETABLEIFNOTEXISTS`test`(
- `id`int(10)unsignedNOTNULLauto_increment,
- `install`int(10)unsignedNOTNULL,
- `day`int(10)unsignedNOTNULL,
- `aid`int(10)unsignedNOTNULL,
- PRIMARYKEY(`id`)
- )ENGINE=MyISAMDEFAULTCHARSET=utf8AUTO_INCREMENT=12;--phpfensi.com
- INSERTINTO`test`(`id`,`install`,`day`,`aid`)VALUES
- (1,1232,20080808,1),
- (2,2321,20080809,2),
- (3,1236,20080810,3),
- (5,4212,20080809,1),
- (6,2312,20080810,1),
- (7,1432,20080811,1),
- (8,2421,20080808,2),
- (9,4245,20080811,2),
- (10,5654,20080810,2),
- (11,412,20080808,3);
sql语句,代码如下:
- SELECTA.*FROMtestA,
- (SELECTaid,MAX(day)max_dayFROMtestGROUPBYaid)B
- WHEREA.aid=B.aidANDA.day=B.max_day
- ORDERBYa.installDESC
我们也可以使用group by 来实例记录统计.
方法1:使用GROUP BY,代码如下:
SQL Query
SELECT COUNT(*) FROM `prince` GROUP BY `mother` > 24;
执行结果:
count(*)
50029
49971
在100,000行数据上的运行时间:0.0335 秒
分析:这种GROUP BY方法的最大问题在于,无法区分所得到的结果,这两个数字哪一个是天宫娘娘们所生的皇子数,哪一个是地宫娘娘们所生的皇子数呢?不知道,所以,尽管它统计出了总数,但是没有什么意义.
因此,为了区分统计结果,必须要把条件 mother > 24 也作为一个字段在结果集中作为一个字段体现出来,修改后的sql如下:
- SELECTCOUNT(*)AS`number`,`mother`>24AS`type`FROM`prince`GROUPBY`mother`>24;
- --执行结果
- numbertype
- 500290
- 499711
条件表达式作为字段时,该字段的值就是该条件表达式的值,因此,对应我们的例子,type = 1 也就是表示 mother > 24 的值为1,因此,第二行中的数字代表地宫娘娘们所生的皇子数.
经过修改后,我们看出,天宫娘娘们略胜一筹.
热门评论