mysql - 从表中获取一组输入的下一个最大时间

标签 mysql sql database

我有一个像这样的 mysql 表

Name  |  age |     time
------+------+---------
x     |   23 | 21:00:01
y     |   67 | 23:34:43
z     |   90 | 12:45:34
a     |   45 | 21:10:10
b     |    3 | 23:45:00

现在我需要找到时间恰好大于给定输入的输入的名称和年龄。

假设我有一个输入 21:00:01,那么输出将为 21:10:10。我可以编写这个查询,但我有一个巨大的输入列表,每次我都无法对每个输入日期执行查询。

我需要的是一个查询,它将输入列表作为输入,并在下一次针对每个输入返回我。我被困在这里,请提供任何解决方案

当 ("21:00:01",...) 中有一个像 time in ("21:00:01",...) 这样的 where 子句时,我试图获得这样的输出

Name  |  age |     time  |    nexttime   |   nextname   |
------+------+-----------+---------------+---------------
x     |   23 | 21:00:01  | 21:10:10      | a
y     |   67 | 23:34:43  | 23:45:00      | b
z     |   90 | 12:45:34  | 21:00:01      | x
a     |   45 | 21:10:10  | 23:34:43      | y
b     |    3 | 23:45:00  |               |

最佳答案

将输入放入表中,例如InputTimes。然后您可以将其作为相关子查询来执行:

select it.*,
       (select name
        from table t
        where t.time > it.time -- removed =
        order by t.time
        limit 1
       ) as name,
       (select age
        from table t
        where t.time > it.time -- removed =
        order by t.time
        limit 1
       ) as age
from InputTimes it;

关于mysql - 从表中获取一组输入的下一个最大时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27060723/

相关文章:

database - 了解 Heroku 中的多个数据库

mysql - 验证用户名是否已存在

mysql - 存储过程不运行

sql - 不正确的SQL语法错误

sql - 如何将列中的 NULL 值换成最后一个非 NULL 值?

c# - 试图在种子方法的 SaveChanges 中找出我的验证错误

MySQL更新更改多列是非原子的?

php - 优化大型且逐渐增加的数据库

php - 如何选择时间戳距10分钟的所有记录?

php - 无法在 PHP 中连接到远程 SQL 数据库,但已设置远程访问并确认可以正常工作