繁体   English   中英

SQL查询帮助请求

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM