3172. 第二天验证 🔒
题目描述
表:emails
+-------------+----------+ | Column Name | Type | +-------------+----------+ | email_id | int | | user_id | int | | signup_date | datetime | +-------------+----------+ (email_id, user_id) 是这张表的主键(有不同值的列的组合)。 这张表的每一行包含 email ID,user ID 和注册日期。
表:texts
+---------------+----------+
| Column Name | Type |
+---------------+----------+
| text_id | int |
| email_id | int |
| signup_action | enum |
| action_date | datetime |
+---------------+----------+
(text_id, email_id) 是这张表的主键(有不同值的列的组合)。
signup_action 是 ('Verified', 'Not Verified') 的枚举类型。
这张表的每一行包含 text ID,email ID,注册操作和操作日期。
编写一个解决方案来找到 第二天验证注册 的用户 ID。
返回结果表以 user_id 升序 排序。
结果格式如下所示。
示例:
输入:
emails 表:
+----------+---------+---------------------+ | email_id | user_id | signup_date | +----------+---------+---------------------+ | 125 | 7771 | 2022-06-14 09:30:00| | 433 | 1052 | 2022-07-09 08:15:00| | 234 | 7005 | 2022-08-20 10:00:00| +----------+---------+---------------------+
texts 表:
+---------+----------+--------------+---------------------+
| text_id | email_id | signup_action| action_date |
+---------+----------+--------------+---------------------+
| 1 | 125 | Verified | 2022-06-15 08:30:00|
| 2 | 433 | Not Verified | 2022-07-10 10:45:00|
| 4 | 234 | Verified | 2022-08-21 09:30:00|
+---------+----------+--------------+---------------------+
输出:
+---------+ | user_id | +---------+ | 7005 | | 7771 | +---------+
解释:
- user_id 为 7005 的用户在 2022-08-20 10:00:00 注册并且在第二天验证。
- user_id 为 7771 的用户在 2022-06-14 09:30:00 注册并且在第二天验证。
解法
方法一:双表关联
我们可以通过内连接两个表,然后根据 DATEDIFF 函数计算出注册日期和操作日期的差值是否等于 1,以及注册操作是否为 Verified,来筛选出满足条件的用户 ID。
1 2 3 4 5 6 7 8 9 | |