1

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

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

只要名称中没有重复项,此查询就会为我提供所有时间和名称。但是,我只想要最快的时间和该行中的名称。

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

4

2 回答 2

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]
于 2012-07-19T16:22:15.147 回答
1

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

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

MySQL:

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

微软 SQL:

SELECT TOP 1 name, time
FROM race
ORDER BY time asc
于 2012-07-19T16:13:18.660 回答