获取大于或等于其自身的ID的最小时间戳

时间:2017-04-16 07:48:15

标签: mysql

我有一个用户表,重要的列是这些。

id | logintime
---+-----------
1  | 2004-01-10
2  | 2006-02-10
3  | 2005-03-12
4  | 2006-10-23

我想创建一个近似用户注册时间的列。为此,我想在id上使用最低的登录时间,并且每个id都大于自身。 logintime是id最后一次登录站点。

虽然它并不完美,但它提供了一个最新的可能日期"对于注册时间。由于id是自动递增,我们知道id为2的人已经在id为3的人之前注册,因此我们使用id 3的登录时间来估计id 2的注册时间。

结果将是

id | logintime  | Registertime
---+------------+-------------
1  | 2004-01-10 | 2004-01-10
2  | 2006-02-10 | 2005-03-12
3  | 2005-03-12 | 2005-03-12
4  | 2006-10-23 | 2006-10-23

我可以使用一个查询执行此操作吗?我想我可以使用t光标来实现它,但这对于这个简单的任务来说似乎有点过于花哨。

修改:澄清了问题。

2 个答案:

答案 0 :(得分:1)

我认为您可以使用select

中的子查询来完成此操作
SELECT a.id, a.logintime,
       (SELECT MIN(logintime) 
        FROM table b
        WHERE b.id >= a.id) Registertime
FROM table a

通过加入,它将如下所示:

SELECT a.id, a.logintime, MIN(b.logintime) Registertime
FROM table a INNER JOIN table b on b.id >= a.id
GROUP BY a.id, a.logintime

我不确定哪一个在性能方面更好。

答案 1 :(得分:1)

试试这个模式Select a.MIN(timespamp) from <yourtable>as A,<yourtable>as b where a.id<=b.id;

希望这有效