查询一天内登陆两次以上的用户
分析:
- 数据存储结构为:用户信息表 和 登陆记录表。
登陆记录表一般会有用户ID,登陆时间这两个核心字段。 - 先从登陆信息表中找到一天内登陆两次以上的用户(id)
- 关联用户信息表得到用户信息。
实现
创建用户表(user_info)
create tableuser_info
(
id
bigint unsigned AUTO_INCREMENT,
username
varchar(50) NOT NULL,
password
varchar(50) NOT NULL,
gender
ENUM(‘male’, ‘female’),
birthday
DATETIME NOT NULL,
phone_number
varchar(20) NOT NULL,
email
varchar(100),
create_time
DATETIME NOT NULL,
PRIMARY KEY(id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建登陆记录表(login)
create table login
(
id
bigint unsigned AUTO_INCREMENT,
user_id
bigint unsigned NOT NULL,
login_time
DATETIME NOT NULL,
PRIMARY KEY(id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
代码
SELECT a.user_id, user_info.username, user_info.gender
FROM (
SELECT user_id, count(login_time) AS cnt
FROM login
WHERE login_time >= ‘2024-04-01 00:00:00’ AND login_time <= ‘2024-04-01 23:59:59’
GROUP BY user_id
HAVING cnt >=0
) a
LEFT JOIN user_info
ON user_info.id = a.user_id