本文章來給大家介紹在于mysql中利用分組group by排序來實現獲取記錄組中時間最大的記錄實現方法,各位朋友可參考.
mysql 分組 group by,排序 取每條記錄中,時間最大的一條記錄,以下是 test 表,測試sql,代碼如下:
- 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 ;--Vevb.com
- 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,因此,第二行中的數字代表地宮娘娘們所生的皇子數.
經過修改后,我們看出,天宮娘娘們略勝一籌.
新聞熱點
疑難解答