版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010590568/article/details/84757557
goodsinoutlog表是玩家充值记录表。RoleID为用户ID,NewValue为最新的充值总金额。玩家的所有记录都会被收录。但是我们只需要最大的NewValue的那一项。所以需要去除重复。而且还要取最大的NewValue的那一条。
表结构:
mysql> desc goodsinoutlog;
+--------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------------------+------+-----+---------+-------+
| Time | int(4) | NO | MUL | 0 | |
| Type | tinyint(1) | NO | | 0 | |
| RoleID | bigint(20) unsigned | NO | | 0 | |
| ThirdChannel | varchar(50) | NO | | 0 | |
| PlayerName | varchar(50) | NO | | NULL | |
| PlayerLevel | smallint(2) | NO | | 0 | |
| VIPLevel | smallint(2) | NO | | 0 | |
| ResType | smallint(2) | NO | | 0 | |
| ItemID | int(4) | NO | | 0 | |
| OldValue | bigint(20) | NO | | 0 | |
| ChangeValue | bigint(20) | NO | | 0 | |
| NewValue | bigint(20) | NO | | 0 | |
| ActionType | smallint(2) | NO | | 0 | |
| Param | int(4) | NO | | 0 | |
+--------------+---------------------+------+-----+---------+-------+
14 rows in set (0.09 sec)
查询脚本
SELECT * from (SELECT * FROM projectdzz.goodsinoutlog WHERE ActionType=108 ORDER BY RoleID,NewValue) a GROUP BY a.RoleID;
mysql> SELECT * from (SELECT * FROM projectdzz.goodsinoutlog WHERE ActionType=108 ORDER BY RoleID,NewValue DESC) a GROUP BY a.RoleID;
+------------+------+--------------------+---------------+--------------------+-------------+----------+---------+--------+----------+-------------+----------+------------+-------+
| Time | Type | RoleID | ThirdChannel | PlayerName | PlayerLevel | VIPLevel | ResType | ItemID | OldValue | ChangeValue | NewValue | ActionType | Param |
+------------+------+--------------------+---------------+--------------------+-------------+----------+---------+--------+----------+-------------+----------+------------+-------+
| 1542506760 | 1 | 865428900757372930 | android_bt_gm | 清明上河图 | 13 | 18 | 2 | 0 | 39955 | 3000 | 42955 | 108 | 101 |
| 1542506465 | 1 | 865428900757372932 | android_bt_gm | 忽悠上帝信佛 | 13 | 18 | 2 | 0 | 40105 | 500000 | 540105 | 108 | 601 |
| 1542507061 | 1 | 865428900757372934 | android_bt_gm | 莲花王 | 13 | 18 | 2 | 0 | 7545 | 3000 | 10545 | 108 | 101 |
| 1542506674 | 1 | 865428900757372938 | android_bt_gm | 贫僧不入尘 | 13 | 18 | 2 | 0 | 40305 | 50000 | 90305 | 108 | 301 |
| 1542506761 | 1 | 865428900757372941 | android_bt_gm | 丿迷失灬岛 | 42 | 18 | 2 | 0 | 40104 | 3000 | 43104 | 108 | 101 |
+------------+------+--------------------+---------------+--------------------+-------------+----------+---------+--------+----------+-------------+----------+------------+-------+
40 rows in set (14.74 sec)
首先我们队标goodsinoutlog做个按照RoleID,NEwValue的排序。最大的会排在最前面,使用的是DESC,取消则使用ASC,默认的就是。后面GROUP BY的时候取第一条 就是想要的数据了!
使用服务器一次查询多个服务器,也可以写一个shell脚本,并且重定向都本地文件1.txt
mysql -h62.234.102.115 -uroot -prooot -N -e"SELECT * from (SELECT * FROM projectdzz.goodsinoutlog WHERE ActionType=108 ORDER BY RoleID,NewValue DESC) a GROUP BY a.RoleID" >1.txt;