BussnissLogs表中字段BussnissLogsID(消费流水ID),UserID(用户ID),HappeningTime(消费时间)
ps:判断最后一条记录的是时间,不是消费流水号
查找最后一个条,取BussnissLogsID最大的那个倒序排序
select top 1 * from (select * from xxx order by BussnissLogsID desc)
要的是按时间最末,那么应该是:select top 1 * from BussnissLogs order by HappeningTime desc
先按消费时间倒序排序,然后按用户分组查询就得到每个用户的第一条记录了(即为最新消费记录)
select * from (select * from xxx order by HappeningTime desc) group by UserID
下面的语句考虑了
1. 同一个USERID在同一天可能有多次消费
2. 消费的时间不是随消费流水号递增,就是考虑了消费流水号越大,但是消费时间不是越晚。
SELECT T3.*
FROM BussnissLogs T3
INNER JOIN (
SELECT MAX(T1.BussnissLogsID) AS [BussnissLogsID]
, T1.UserID
FROM BussnissLogs T1
LEFT JOIN BussnissLogs T2
ON T1.UserID = T2.UserID
AND T1.HappeningTime < T2.HappeningTime
WHERE T2.UserID IS NULL
GROUP BY T1.UserID
) T4
ON T3.UserID = T4.UserID
AND T3.BussnissLogsID = T4.BussnissLogsID
如果不考虑第一种情况,下面的语句就能满足
SELECT T1.*
FROM BussnissLogs T1
LEFT JOIN BussnissLogs T2
ON T1.UserID = T2.UserID
AND T1.HappeningTime < T2.HappeningTime
WHERE T2.UserID IS NULL
如果不考虑第二种情况,下面语句就能满足
SELECT MAX(T1.BussnissLogsID)
, T1.UserID
, MAX(T1.HappeningTime)
FROM BussnissLogs T1
GROUP BY T1.UserID
select top 1 from Bussinesslog where userId in (selelct userId group by userId ) order by HappingTime desc
select * from BussnissLogs as a where not exists(select 1 from BussnissLogs where UserID=a.UserID and HappeningTime<a.HappeningTime)
你看这样行吗?
select bl.UserID as '用户ID',max(bl.HappeningTime) as '最后一次消费时间' from BussnissLogs as bl group by bl.UserID