使用LIMIT选择单个行

时间:2016-12-03 14:03:11

标签: mysql sql

我试图弄清楚是否还有使用GROUP_CONCAT根据这些参数选择行。

enter image description here

我试图获得每个样式/区域组的最低时间。

AKA:

Lowest Time for Style 0 ZoneGroup 0
Lowest Time for Style 0 ZoneGroup 1
Lowest Time for Style 0 ZoneGroup 2
Lowest Time for Style 1 ZoneGroup 0
Lowest Time for Style 2 ZoneGroup 0
...

我可以通过我的插件发送多个查询,但我想知道是否可以首先使用GROUP_CONCAT函数将其删除,如果是这样的话 -

这是我能做的,但我想知道这是否可以转换成一行。

for (int i = 0; i < MAX_STYLES; i++) {
    for (int x = 0; x < MAX_ZONEGROUPS; x++) {
        Transaction.AddQuery("SELECT * FROM `t_records` WHERE mapname = 'de_dust2' AND style = i AND zonegroup = x ORDER BY time ASC LIMIT 1;");
    }
}

感谢。

1 个答案:

答案 0 :(得分:3)

您不需要group_concat()。您想要过滤记录,因此请使用WHERE。 。 。在这种情况下,使用相关子查询:

select r.*
from t_records r
where r.mapname = 'de_dust2' and
      r.timestamp = (select min(r2.timestamp)
                     from t_records r2
                     where r2.mapname = r.mapname and
                           r2.style = r.style and 
                           r2.zonegroup = r.zonegroup
                    );