最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
mysql 分组group by排序取每条记录中,时间最大的一条记录
时间:2013-08-28 编辑:简简单单 来源:一聚教程网
本文介绍了mysql 分组 group by, 排序 取每条记录中,时间最大的一条记录的实现方法,有需要的朋友可以参考一席。
以下是 test 表,测试sql
CREATE TABLE IF NOT EXISTS `test` (
CREATE TABLE IF NOT EXISTS `test` ( `id` int(10) unsigned NOT NULL auto_increment, `install` int(10) unsigned NOT NULL, `day` int(10) unsigned NOT NULL, `aid` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ; INSERT INTO `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语句
SELECT A.* FROM test A, (SELECT aid, MAX(day) max_day FROM test GROUP BY aid) B WHERE A.aid = B.aid AND A.day = B.max_day ORDER BY a.install DESC我们也可以使用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如下:
SELECT COUNT(*) AS `number`, `mother` > 24 AS `type` FROM `prince` GROUP BY `mother` > 24;执行结果
number type 50029 0 49971 1
条件表达式作为字段时,该字段的值就是该条件表达式的值,因此,对应我们的例子,type = 1 也就是表示 mother > 24 的值为1,因此,第二行中的数字代表地宫娘娘们所生的皇子数。
经过修改后,我们看出,天宫娘娘们略胜一筹。
相关文章
- mysql 分组 group by, 排序 取每条记录中,时间最大的一条记录 10-25
- MySQL登录、访问及退出操作解析 10-18
- sql语句 update字段null不能用is null问题解析 09-28
- SQL Server ISNULL 不生效原因及解决分析 09-28
- 关于if exists的用法及说明分析 09-28
- Access数据库日常维护方法 09-28