如何将以下信息合并到1个mysql查询中?

时间:2012-08-24 14:42:07

标签: mysql sql sorting

详情

我想找到每次测试的开始和停止时间(持续时间)之间的差异,然后根据每个测试的最高分数和最低持续时间对用户进行排名。最终我将使用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语句中,我希望得到idscore以及计算出的duration

我可以通过以下查询获得今天进行的任何测试的持续时间。

SELECT TIMESTAMPDIFF(SECOND,stop,start) AS duration
FROM testresults WHERE `start` >= DATE(NOW())

然后我根据排名对结果进行排序。排名根据分数和持续时间确定。最佳位置是持续时间最短的最高分。我相信我可以用这样的东西做到这一点:

ORDER BY score DESC, duration ASC

我只想要100个条目,

LIMIT 100

问题

如何将上述信息合并为1个查询?

2 个答案:

答案 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

这应该有效