萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql 分組group by排序取每條記錄中,時間最大的一條記錄

mysql 分組group by排序取每條記錄中,時間最大的一條記錄

本文章來給大家介紹在於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 ;


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,因此,第二行中的數字代表地宮娘娘們所生的皇子數。

經過修改後,我們看出,天宮娘娘們略勝一籌。

copyright © 萬盛學電腦網 all rights reserved