SQL查询帮助请求

时间:2011-11-29 14:00:50

标签: php mysql sql

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

提前感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用子查询过滤掉每个用户的旧记录。然后,您可以使用where条件来要求最新记录超过五天。

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

答案 1 :(得分:0)

尝试:

select user_id, val, min(Create_date)
from table
group by user_id
having datediff(now(), min(Create_date)) > 5