sql查询最近两次连续注册的时间

准备数据源

USE test;
CREATE TABLE login(
id INT NOT NULL,
user_id VARCHAR(255),
login_time DATETIME
)

插入数据

INSERT INTO login(id,user_id,login_time) VALUES (1,'u1','2020-04-28 9:20:00');
INSERT INTO login(id,user_id,login_time) VALUES (1,'u1','2020-4-25 9:37.00');
INSERT INTO login(id,user_id,login_time) VALUES (1,'u1','2020-4-20 9:20:00');
INSERT INTO login(id,user_id,login_time) VALUES (1,'u2','2020-4-28 9:42:00');
INSERT INTO login(id,user_id,login_time) VALUES (1,'u2','2020-4-22 9:20:00');

查询数据

在这里插入图片描述

对数据进行分析

方法一

USE test;
SELECT 
*,
DATEDIFF(b.pre,b.login_time ) AS diff
FROM
(	SELECT 
	id,
	user_id,
	login_time,
	@a.login_time AS pre,
	@a.login_time:= a.login_time
	FROM login a ,(SELECT @a.login_time:=0)r 
	WHERE a.user_id='u1'
 )b order by b.login_time limit 1;

方法二

use test;
SELECT
DATEDIFF(payl.login_time,payl.btime) AS diff
FROM
(	
	SELECT 
	pl.user_id,
	pl.login_time,
	pl.btime
	FROM
		(SELECT  
		a.id, 
		a.user_id,
		a.login_time, 
		b.login_time AS btime 
		FROM login  a,login b 
		WHERE a.user_id='u1' and b.user_id='u1'
		ORDER BY a.login_time DESC,btime DESC LIMIT 2)pl
	WHERE pl.login_time != pl.btime LIMIT 1
	)payl;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值