[英]SQL query help request
user table
.--------------------------------.
| userid| val | Create_Date |
.--------------------------------.
| U1 | foo | 2011-05-01 |
| U1 | foo | 2011-11-18 |
| | | |
| U2 | foo | 2011-11-18 |
| U2 | foo | 2011-11-28 |
| | | |
| U3 | foo | 2011-04-11 |
| U3 | foo | 2011-11-04 |
| | | |
| U4 | foo | 2011-11-21 |
| U4 | foo | 2011-11-28 |
.________________________________.
我有一张和上面相似的桌子。 我需要获取的是最新记录,并确保最新记录是当前日期的5天以上。
例如,当前日期是2011-11-29
SQL语句的输出应为
.--------------------------------.
| userid| val | Create_Date |
.--------------------------------.
| U3 | foo | 2011-11-04 |
| U1 | foo | 2011-11-18 |
.________________________________.
我当前的SQL能够获取最新记录,但无法与最新日期进行比较。
请帮我调试。 谢谢。
SELECT * FROM user_table t1
WHERE DATEDIFF(NOW(), (SELECT MAX(create_date)
FROM user_table t2
WHERE t2.userid = t1.userid)) > 5
提前致谢。
您可以使用子查询来筛选出每个用户的较早记录。 然后,您可以使用where条件要求最新记录已超过5天。
select *
from UserTable u
join (
select userid
, max(Create_Date) as LatestCreateDate
from YourTable
group by
userid
) filter
on filter.userid = u.userid
and filter.LatestCreateDate = u.Create_Date
where datediff(now(), u.Create_Date) > 5
尝试:
select user_id, val, min(Create_date)
from table
group by user_id
having datediff(now(), min(Create_date)) > 5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.