如何在MySQL中一共将两个字段分组

如何在MySQL中一共将两个字段分组

这是我的桌子:

gw_id |gw_payload |gw_name |gw_ref |gw_time             |gw_created_time     |
------|-----------|--------|-------|--------------------|--------------------|
1     |aaa        |PHP     |0.1.1  |2015-11-11 11:34:41 |2015-11-11 13:59:44 |
2     |bbb        |PHP     |0.1.1  |2015-11-11 11:34:41 |2015-11-11 13:59:57 |
3     |ccc        |RUBY    |0.1.2  |2015-11-10 01:34:41 |2015-11-10 13:59:57 |
4     |ddd        |RUBY    |0.1.4  |2015-11-10 02:34:41 |2015-11-10 16:59:57 |

我想通过gw_name获取记录组,我想获得最新的gw_ref和最新的gw_time。所以我想说:
gw_name |gw_ref_max |gw_time_max         |
--------|-----------|--------------------|
RUBY    |0.1.4      |2015-11-10 02:34:41 |
PHP     |0.1.1      |2015-11-11 11:34:41 |

我正在使用这个SQL,它可以工作,但我认为它不正确,我担心:
select gw_name, max(gw_ref) as gw_ref_max, max(gw_time) as gw_time_max
from tbl group by gw_name order by gw_time,gw_created_time desc

那么我应该编写什么样的正确SQL呢?

最佳答案

如果需要获取与之对应的最新gw_refgw_time,则可以使用子查询。

select * from (
    select gw_name, gw_ref, gw_time
    from tbl
    order by gw_ref desc, gw_time desc, gw_created_time desc
) as s
group by s.gw_name

注意按gw_ref排序,它可以采用0.1.10(大于0.1.2)这样的值。您可以尝试通过SUBSTRING_INDEX订购。

关于mysql - 如何在MySQL中一共将两个字段分组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33666667/

10-14 15:18