SQL MIN()选择数据。 ORDER表正确

时间:2012-07-19 16:09:34

标签: mysql sql database

我有2个问题。首先,我有一个 MySQL 数据库,其行包含: id(AUTO_INCREMENT PRIMARY KEY)名称时间 。该数据库代表比赛的时间。我想选择时间最小的名称和时间。

SELECT name, MIN(time) as time FROM race GROUP BY TIME;

只要名称中没有重复项,此查询就会给出所有时间和名称。然而,我只想要那一行中最快的时间和名字。

然后当我提交我的时间时,我想知道我在哪个地方。将ORDER BY TIME保持每行的每个ID相同,或者我可以只按表格BY时间,然后选择ID = 1的行吗?

2 个答案:

答案 0 :(得分:2)

如果有可能同时有多个条目,我会使用这样的嵌套查询,因为将结果集限制为1可能会排除名称。

select name, time from race where time = (select min(time) from race)

如果您想知道给定时间的位置,只需计算时间少于它的条目数。

select count(*) + 1 as place from race where time < [your time]

答案 1 :(得分:1)

对于您的第一个问题,您想要的是选择“最少”时间。

这就是我认为最明智的方法,它使用LIMIT函数只返回1行。

MySQL的:

SELECT name, time 
FROM race 
ORDER BY time asc
LIMIT 1;

MS SQL:

SELECT TOP 1 name, time
FROM race
ORDER BY time asc