我有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的行吗?
答案 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