按照mysql中的顺序进行分组

时间:2017-04-07 06:11:11

标签: mysql

我想找出查询在哪个group by后面按顺序排序。

我的表格是 resource_monitor

id  |   server_ip   |    rdp_connection
1   |  192.168.1.45 |          9
2   |  192.168.1.46 |          12
3   |  192.168.1.45 |          8
4   |  192.168.1.45 |          4
5   |  192.168.1.46 |          3

我有用户查询

按资讯署desc的server_ip顺序从资源_监察组中选择*

这给我的结果是

id  |   server_ip   |    rdp_connection
2   |  192.168.1.46 |          12
1   |  192.168.1.45 |          9

但我想要所有唯一的server_ip的最后记录

id  |   server_ip   |    rdp_connection
4   |  192.168.1.45 |          4
5   |  192.168.1.46 |          3

3 个答案:

答案 0 :(得分:1)

您需要使用子查询获得第一个max(id)并在where子句

中使用它
 select * from resource_monitor where id in 
      (select max(id) from resource_monitor group by server_ip ) 
    order by id desc

答案 1 :(得分:1)

您可以使用SubQuery执行以下操作

SELECT *
    FROM
      (SELECT *
       FROM resource_monitor
       ORDER BY id DESC) AS test
    GROUP BY test.server_ip

答案 2 :(得分:0)

向您展示数据样本似乎需要每个server_ip的最后一个值

select id, server_ip, rdp_connection
from resource_monitor
where ( id,server_ip ) in 
( select max(id) as id, server_ip from resource_monitor 
  group by server_ip )
  order by id desc