国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

sql分組取最大記錄方法

2024-07-24 12:39:02
字體:
供稿:網(wǎng)友

要想取利用group by 分組后第一條記錄我們就需要結(jié)合order by 來操作,原是是很利用group by 把所有分組取出來,然后來利用order by 對(duì)分組里面的數(shù)據(jù)進(jìn)行desc排序取第一條就KO了.

先看看group by 語句的用法

GROUP BY 語句,GROUP BY 語句用于結(jié)合合計(jì)函數(shù),根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組.

SQL GROUP BY 語法,代碼如下:

  1. SELECT column_name, aggregate_function(column_name) 
  2. FROM table_name 
  3. WHERE column_name operator value 
  4. GROUP BY column_name 

在SQL的 語句一起使用同樣數(shù)目的SQL聚合函數(shù)提供分組的某些數(shù)據(jù)庫教程表列,第結(jié)果數(shù)據(jù)集方法,實(shí)例,以下是 test 表,測(cè)試sql,代碼如下:

  1. CREATE TABLE IF NOT EXISTS `test` ( 
  2. `id` int(10) unsigned NOT NULL auto_increment, 
  3. `install` int(10) unsigned NOT NULL
  4. `dayint(10) unsigned NOT NULL
  5. `aid` int(10) unsigned NOT NULL
  6. PRIMARY KEY (`id`) 
  7. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ; 
  8.  
  9. INSERT INTO `test` (`id`, `install`, `day`, `aid`) VALUES 
  10. (1, 'www.survivalescaperooms.com', 20120308, 1), 
  11. (2, 2321, 20120309, 2), 
  12. (3, 1236, 20120310, 3), 
  13. (5, 'www.survivalescaperooms.com', 20120309, 1), 
  14. (6, 2312, 20120310, 1), 
  15. (7, 1432, 20120311, 1), 
  16. (8, 2421, 20120308, 2), 
  17. (9, 4245, 20120311, 2), 
  18. (10, 'www.survivalescaperooms.com', 20120310, 2), 
  19. (11, 412, 20120308, 3); 

實(shí)現(xiàn)sql語句,代碼如下:

  1. SELECT A.* FROM test A, 
  2. (SELECT aid, MAX(day) max_day FROM test GROUP BY aid) B 
  3. WHERE A.aid = B.aid AND A.day = B.max_day 
  4. ORDER BY a.install DESC 

這樣我們只要取集合的還desc排序的第一條就可以了.

再看個(gè)mssql server實(shí)例,例如 table1(a,b,c,d),代碼如下:

  1. a    b    c    d 
  2. 1    0    c1  d1 
  3. 1    1    c2  d2 
  4. 1    3    c3  d3 
  5.  
  6. 4    0    c4  d4 
  7.  
  8. 5     1   c5   d5 
  9. 5     2   c6   d6 
  10.  
  11. 6     1   c7   d7 
  12. 6     4   c8   d8 

我要得到的是按a分組,在每個(gè)分組中取b值最大的一條記錄,就是如下:

  1. a   b   c   d 
  2. 1   3   c3   d3 
  3. 4   0   c4   d4 
  4. 5   2   c6   d6 
  5. 6   4   c8   d8  

方法一,代碼如下:

select * from table1 where b in (select max(b) from table1 group by a) ;

方法二,代碼如下:

select * from table1 a where b=(select max(b) from table1 where a=a.a)

好了就講這么多了,希望對(duì)大家有用.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 长治县| 苏州市| 尚志市| 龙游县| 波密县| 清镇市| 高安市| 榆树市| 菏泽市| 榕江县| 金山区| 禄劝| 闵行区| 祁阳县| 嘉峪关市| 惠水县| 晋中市| 灵武市| 胶南市| 阿拉善右旗| 丹寨县| 阿巴嘎旗| 黄大仙区| 扶风县| 天津市| 姚安县| 乐安县| 通山县| 颍上县| 保德县| 金塔县| 莒南县| 双鸭山市| 祥云县| 徐水县| 象山县| 襄垣县| 都江堰市| 惠来县| 平度市| 西安市|