如何编写查询,为每个用户提供第一个和最后一个记录

时间:2014-05-04 07:37:07

标签: sql

我有桌子

user_details (mobile_num, log, lat, datetime1)
9999999999 10 10 2014-05-02 09:31:05
9999999999 10 10 2014-05-02 10:00:05
...............
9999999999 10 10 2014-05-02 06:30:05

1111111111 10 10 2014-05-02 09:32:05
1111111111 10 10 2014-05-02 10:00:05
...............
1111111111 10 10 2014-05-02 06:32:05

此表每分钟更新一次 这是用户表     用户(mobile_num,名称)     1111111111 A.     9999999999 B

在user_details表中,我需要获取今天或任何日期的每个用户的第一个和最后一个记录 REsult是

ph num1 name log lat第一个条目 ph num1 name log lat最后一个条目 ph num2 name log lat第一个条目 ph num2 name log lat last entry

我正在使用mysql

我使用了这个查询

select * from user_time_details,user user_time_details.phone_number = user.phone_num and now_date_time> DATE_SUB(CURDATE())按名称排序,id

这将为所有用户提供今天的所有条目

9999999999 10 10 2014-05-02 09:31:05 (first)
9999999999 10 10 2014-05-02 10:00:05
    ...............
9999999999 10 10 2014-05-02 06:30:05 (last)

2222222222 10 10 2014-05-02 09:31:05 (first)
2222222222 10 10 2014-05-02 10:00:05
    ...............
2222222222 10 10 2014-05-02 06:30:05 (last)

但我只需要第一个和最后一个记录

1 个答案:

答案 0 :(得分:1)

用于SQL Server

DECLARE @today DATETIME = GETDATE();

SELECT TOP 1 * FROM user_details WHERE DATEDIFF(day, datetime1, @today) = 0 
 ORDER BY datetime1
UNION ALL
SELECT TOP 1 * FROM user_details WHERE DATEDIFF(day, datetime1, @today) = 0 
 ORDER BY datetime1 DESC;