当前位置:首页 > Mysql教程 > 列表

mysql分组 排序取每条记录中最后更新记录

发布:smiling 来源: PHP粉丝网  添加日期:2014-10-08 11:33:12 浏览: 评论:0 

本文章来给大家介绍关于mysql分组 排序取每条记录中最后更新记录,有需要了解的朋友可进入参考参考。

以下是 test 表,测试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.  
  10. INSERT INTO `test` (`id`, `install`, `day`, `aid`) VALUES 
  11. (1, 1232, 20080808, 1), 
  12. (2, 2321, 20080809, 2), 
  13. (3, 1236, 20080810, 3), 
  14. (5, 4212, 20080809, 1), 
  15. (6, 2312, 20080810, 1), 
  16. (7, 1432, 20080811, 1), 
  17. (8, 2421, 20080808, 2), 
  18. (9, 4245, 20080811, 2), 
  19. (10, 5654, 20080810, 2), 
  20. (11, 412, 20080808, 3); 

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 

mysql实现分组排序并赋予序号的存贮过程,代码如下:

  1. drop procedure set_rank; 
  2.  create procedure set_rank() 
  3.  begin 
  4.  set @i=1; 
  5.  set @number=(select count(1) from suppliers_performance); 
  6.  update suppliers_performance set score_rank=0; 
  7.  
  8.  while @i<@number 
  9.  do 
  10.  begin 
  11.      update suppliers_performance set score_rank=@i where id in (select id from (select id from suppliers_performance where score_rank=0 order by score limit 1) b);  --phpfensi.com 
  12.      set @i=@i+1; 
  13.  end
  14.  end WHILE; 
  15.  end;

Tags: mysql分组 mysql排序

分享到: