Mysql 数据分组取某字段值所有最大的记录行

需求:

表中同一个uid(用户)拥有多条游戏等级记录,现需要取所有用户最高等级(level)的那一条数据,且时间(time)越早排越前。这是典型的排名表

+------+-------+--------------+---------------------+
| uid  | level | role         | time                |
+------+-------+--------------+---------------------+
| 7    |     1 | 摇滚圣魔     | 2014-06-12 15:01:05 |
| 1134 |     4 | 唯我独尊     | 2014-06-12 15:02:38 |
| 1134 |     4 | 唯我独尊     | 2014-06-12 15:02:39 |
| 7    |     3 | 摇滚圣魔     | 2014-06-12 15:02:59 |
| 5    |     3 | 韵儿铃♦      | 2014-06-12 15:04:09 |
| 7363 |     6 | 诗荷冰月     | 2014-06-12 15:04:23 |
| 6684 |     4 | つ道远虚空つ | 2014-06-12 15:05:13 |
| 7    |    16 | 摇滚圣魔     | 2014-06-12 15:05:46 |
| 1    |     2 | 斗土豪       | 2014-06-12 15:05:48 |
| 7    |    26 | 摇滚圣魔     | 2014-06-12 15:08:36 |
| 6684 |     8 | つ道远虚空つ | 2014-06-12 15:08:45 |
| 5    |    12 | 韵儿铃♦      | 2014-06-12 15:09:47 |
| 6834 |     1 | 无敌追翼     | 2014-06-12 15:10:56 |
| 5    |    16 | 韵儿铃♦      | 2014-06-12 15:11:18 |
| 8719 |     1 | 君望赤       | 2014-06-12 15:11:48 |
| 6274 |    36 | 五月独孤     | 2014-06-12 15:12:22 |
| 8724 |    26 | 童童         | 2014-06-12 15:12:31 |
| 1134 |    32 | 唯我独尊     | 2014-06-12 15:12:51 |
| 7    |    26 | 摇滚圣魔     | 2014-06-12 15:13:38 |
| 5    |    25 | 韵儿铃♦      | 2014-06-12 15:14:48 |
| 7757 |     3 | つ清灵旋つ   | 2014-06-12 15:16:50 |
| 7    |    26 | 摇滚圣魔     | 2014-06-12 15:17:26 |
| 5    |    28 | 韵儿铃♦      | 2014-06-12 15:18:08 |
| 7757 |    23 | つ清灵旋つ   | 2014-06-12 15:19:29 |
| 6274 |    43 | 五月独孤     | 2014-06-12 15:19:54 |
| 8724 |    30 | 童童         | 2014-06-12 15:20:39 |
| 7757 |    26 | つ清灵旋つ   | 2014-06-12 15:20:58 |
| 8707 |    36 | 就是干       | 2014-06-12 15:22:28 |
| 7757 |    29 | つ清灵旋つ   | 2014-06-12 15:23:05 |
| 7757 |    32 | つ清灵旋つ   | 2014-06-12 15:24:57 |
| 8726 |    10 | 连曦         | 2014-06-12 15:26:01 |
| 7363 |    34 | 诗荷冰月     | 2014-06-12 15:26:58 |
| 7    |    26 | 摇滚圣魔     | 2014-06-12 15:27:33 |
| 5    |    37 | 韵儿铃♦      | 2014-06-12 15:27:37 |
| 8347 |     1 | 无敌         | 2014-06-12 15:28:09 |
| 6274 |    47 | 五月独孤     | 2014-06-12 15:28:13 |
| 1    |    32 | 斗土豪       | 2014-06-12 15:29:18 |
| 1134 |    46 | 唯我独尊     | 2014-06-12 15:30:52 |
| 7757 |    41 | つ清灵旋つ   | 2014-06-12 15:30:56 |
| 9    |    34 | 饭饭饭饭の   | 2014-06-12 15:31:03 |
| 6274 |    48 | 五月独孤     | 2014-06-12 15:31:18 |
| 8724 |    41 | 童童         | 2014-06-12 15:32:30 |
| 7757 |    42 | つ清灵旋つ   | 2014-06-12 15:34:24 |
| 1134 |    48 | 唯我独尊     | 2014-06-12 15:34:56 |
| 1100 |     2 | 圣魔霄       | 2014-06-12 15:35:54 |
| 1008 |    21 | ∵嘟嘟冰儿∵ | 2014-06-12 15:36:10 |
| 7757 |    45 | つ清灵旋つ   | 2014-06-12 15:40:49 |
| 3088 |     4 | 战魂?凌空    | 2014-06-12 15:41:38 |
| 5    |    41 | 韵儿铃♦      | 2014-06-12 15:41:56 |
| 7757 |    46 | つ清灵旋つ   | 2014-06-12 15:43:24 |

实现过程:

1.首先对该数据进行2次排序,uid 排序以及等级的降序排序

2.对排序后的结果用uid进行分组,分组后等级降序排序,时间升序排序

实现SQL:

select * from (select a.uid,a.level,a.role,a.time from 数据表 a
where order BY a.uid desc,a.level desc) as 别名 group by user_uid order by level desc,time asc limit 30;

Mysql 数据分组取某字段值所有最大的记录行

时间: 2024-11-07 07:21:45

Mysql 数据分组取某字段值所有最大的记录行的相关文章

MySQL查询-分组取组中某字段最大(小)值所有记录

最近做东西的时候,用到一个数据库的查询.将记录按某个字段分组,取每个分组中某个字段的最大值的所有记录.举栗子来说. 已知分数表“score”,包含字段“id", "name", "course", "score".包含记录如下图所示. 现在,要求查询每个人分数最高的课程的那一条记录.即获得如下结果: 大概思路是,先通过order by将记录按score字段排序,创建临时表.然后按name字段分组查询临时表,即可获得所需查询结果.完整的s

SQL按字段分组取最大(小)值记录(重复记录)

SQL Server 按某一字段分组 取 最大 (小)值所在行的数据 -- 按某一字段分组 取 最大 (小)值所在行的数据 -- (爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 2007-10-23于浙江杭州) /* 数据如下: name val memo a    2   a2(a的第二个值) a    1   a1--a的第一个值 a    3   a3:a的第三个值 b    1   b1--b的第一个值 b    3   b3:b的第三个值 b    2   b2b2b2b2 b   

使用命令设置MySQL数据表自增ID起始值

使用命令设置MySQL数据表自增ID起始值技术 maybe yes 发表于2015-01-24 16:14 原文链接 : http://blog.lmlphp.com/archives/68  来自 : LMLPHP后院 有 时候我们清空了 MySQL 数据库中数据表的记录,自动增长的 ID 值变的很大,如何将自动增长的 ID 值设置为1或者修改为其他的值呢?使用一些工具,比如 NaviCat for MySQL 当然非常简单,通过在设计表处修改即可,其他的一些工具也都很简单.下面给出使用 SQ

Phantomjs+Nodejs+Mysql数据抓取(2.抓取图片)

概要 这篇博客是在上一篇博客Phantomjs+Nodejs+Mysql数据抓取(1.抓取数据) http://blog.csdn.net/jokerkon/article/details/50868880 后进行的第二部分,请各位读者在看这篇博客之前先浏览上一篇,因为这里面有部分代码会沿用到上一部分的抓取结果. 好,现在开始正式的抓取图片的讲解 首先,我们先来看看代码: var page =require('webpage').create(); var address='http://pro

EHlib在数据单元中显示字段值为图形。

-[定制网格数据单元]  在数据单元中显示字段值为图形.  TDBGridEh allows to show bitmaps from TImageList component depending on field values. TDBGridEh 可以根据字段的值显示TImageList 组件中相应的BMP. To show bitmaps depending on field values need: 要根据字段的值显示BMP图片需要, Fill list of field values

按某一字段分组取最大(小)值所在行的数据 分拆列值(转) 日期的推算

数据如下:name val memoa 2 a2(a的第二个值)a 1 a1--a的第一个值a 3 a3:a的第三个值b 1 b1--b的第一个值b 3 b3:b的第三个值b 2 b2b2b2b2b 4 b4b4b 5 b5b5b5b5b5*/--创建表并插入数据:create table tb(name varchar(10),val int,memo varchar(20))insert into tb values('a', 2, 'a2(a的第二个值)')insert into tb v

mysql数据的类型以及字段的约束问题【重点】

1.确保mysql字段[包括库名.表名]的正确,必要使用反引号 2.校对集指的是字符之间的关系[对字段值的字符处理]校对集依赖于字符集校对集:在某个字符集下面,这些字符的排序关系称之为校对集[对字段进行某种排序处理] 在phpmyadmin中设置库的编码,使用的ci结尾的编码就是使用了校对集[默认是使用的,但是其实校对集基本用不上] _bin:二进制编码层面直接比较_ci:忽略大小写_cs:不忽略大小写[http://www.jb51.net/article/30865.htm] 3.整型介绍s

Phantomjs+Nodejs+Mysql数据抓取(1.数据抓取)

概要: 这篇博文主要讲一下如何使用Phantomjs进行数据抓取,这里面抓的网站是太平洋电脑网估价的内容.主要是对电脑笔记本以及他们的属性进行抓取,然后在使用nodejs进行下载图片和插入数据库操作. 先进行所有页面的内容进行抓取 var page =require('webpage').create(); var address='http://product.pconline.com.cn/server/'; var fs = require('fs'); var mypath = 'ver

MySQL获取分组后的TOP 1和TOP N记录

有时会碰到一些需求,查询分组后的最大值,最小值所在的整行记录或者分组后的top n行的记录,在一些别的数据库可能有窗口函数可以方面的查出来,但是MySQL没有这些函数,没有直接的方法可以查出来,可通过以下的方法来查询. 准备工作 测试表结构如下: root:test> show create table test1\G *************************** 1. row *************************** Table: test1 Create Table: