选择包含每个唯一字段值的行,并按另一个具有限制的字段排序
Selecting Rows Containing Each Unique Field Value & Sorting By Another Field With A Limit
我的表中有以下字段/结构:
(`map`, `authid`, `name`, `time`, `date`, `weapon`)
每次玩家在游戏中完成地图时,只要玩家完成地图所花费的每一map
time
都低于以前存储的任何time
,此信息就会存储在此表中的sql行中。这意味着对于任何给定的玩家,每个map
只有一行(authid
/name
(。
现在,进入我的问题。作为SQL菜鸟,我希望找出一个要运行的查询,该查询将为每个映射选择最低的15次(显然,如果每个映射的条目少于15个,则将返回所有条目(。我知道我可以在 PHP 中创建如下所示的查询:
SELECT * FROM tablename WHERE map='". $map ."' ORDER BY time LIMIT 15;
但是我需要得到一个多维数组 (PHP( 或对象 (JS(,其中包含每个唯一的map
值,以便稍后在我的代码中使用(并且需要按时间排序(,即:
{"map1":[
{"authid1":"val",
"name1":"dude1",
"time":"23.46",
"date":"val",
...},
{"authid1":"val",
"name1":"dude2",
"time":"42.33",
"date":"val",
...},
...],
"map2":[
...
...]
}
如果我不能纯粹通过SQL查询来做到这一点,那么我怎么能利用PHP或JS来完成我的目标呢?
$q1 = "SELECT map from tablename GROUP BY map ORDER BY map";
$r1 = $db->mysqli_query($q1);
while ($mapRow = mysqli_fetch_assoc($r1)) {
$map = $mapRow['map'];
$q2 = "SELECT * FROM tablename WHERE map='". $map ."' ORDER BY time LIMIT 15";
$r2 = $db->mysqli_query($q2);
while ($dataRow = mysqli_fetch_assoc($r2)) {
$map[] = $dataRow;
}
}
相关文章:
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- Angular ng repeat order将多个字段作为一个字段
- 如何将Date字段设置为等于另一个Date+Int值,该值表示月份值
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 可以't无法将一个字段复制到另一个字段
- 检查 2 个输入字段和一个选择字段,以便在它们全部填写后进行更改
- 将输入字段从一个复制到另一个
- 使用javascript从php向文本输入字段返回一个值
- 仅使JSP页面中出现的同一字段的一个实例可编辑
- 可以为邮件添加刚刚克隆的输入字段(最后一个)
- 使用Jquery为字段添加一个复选框值
- 对不同文件中同一个类的所有字段应用一个函数一次
- 通过隐藏字段获得一个框架来处理knockout.js不持久化的问题
- 动态输入字段和一个javascript
- 我如何清除所有字段在一个可变的html内容?(最好使用jQuery)
- PHP Javascript AJAX填充和计算几个输入字段-只有一个函数填充
- Mongodb /meteor收集检查子文档字段是否存在,当字段是一个变量
- 为要添加到ng-repeat中的自定义类型的输入字段创建一个自定义指令
- 如何存储标记值(如gmail字段)作为一个字符串在一个变量使用html和javascript