国产探花免费观看_亚洲丰满少妇自慰呻吟_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, 'm.survivalescaperooms.com', 20120308, 1), 
  11. (2, 2321, 20120309, 2), 
  12. (3, 1236, 20120310, 3), 
  13. (5, 'm.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, 'm.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ā)表
主站蜘蛛池模板: 新建县| 西宁市| 柘城县| 三江| 桃园市| 家居| 西充县| 桂平市| 黔西| 吴堡县| 都安| 霍城县| 英吉沙县| 杂多县| 武宣县| 桂东县| 南雄市| 临夏市| 托里县| 锡林郭勒盟| 项城市| 仁寿县| 西城区| 江永县| 甘泉县| 行唐县| 桦甸市| 通化县| 桃园市| 镇安县| 班玛县| 特克斯县| 精河县| 琼结县| 綦江县| 杭锦后旗| 蓬溪县| 施甸县| 海南省| 佛山市| 蒲江县|