详情
我想找到每次测试的开始和停止时间(持续时间)之间的差异,然后根据每个测试的最高分数和最低持续时间对用户进行排名。最终我将使用PDO在mysql中执行此操作。到目前为止,我刚刚开始研究sql。我想我现在已经很近了,但我不确定how to combine the information into one query
。
我的GOT(未经测试)。
我有下表testresults
--------------------------------------------------------------------
| index | id | start | stop | score|
--------------------------------------------------------------------
| 1 | 23 | 2012-06-06 07:30:20 | 2012-06-06 07:30:34 | 100 |
--------------------------------------------------------------------
在我的select语句中,我希望得到id
和score
以及计算出的duration
。
我可以通过以下查询获得今天进行的任何测试的持续时间。
SELECT TIMESTAMPDIFF(SECOND,stop,start) AS duration
FROM testresults WHERE `start` >= DATE(NOW())
然后我根据排名对结果进行排序。排名根据分数和持续时间确定。最佳位置是持续时间最短的最高分。我相信我可以用这样的东西做到这一点:
ORDER BY score DESC, duration ASC
我只想要100个条目,
LIMIT 100
问题
如何将上述信息合并为1个查询?
答案 0 :(得分:1)
SELECT `id`, `score`,
TIMESTAMPDIFF( SECOND, start, stop ) AS `duration`
FROM `testresults`
WHERE `start` >= DATE(NOW())
ORDER BY `score` DESC, `duration` ASC
LIMIT 100;
这将非常有效。你还需要放id
& score
声明中的SELECT
。
答案 1 :(得分:1)
SELECT id, score, TIMESTAMPDIFF(SECOND,stop,start) AS duration FROM testresults
WHERE `start` >= DATE(NOW()) ORDER BY score DESC, duration ASC LIMIT 100
这应该有效