我有两张表:User
和Session
。对于每个用户,我想知道会话表中的最后一条记录是否是去年创建的。
我尝试了以下方法,但不起作用:
SELECT *
FROM(
SELECT MAX(`Session`.acDateF) as MaxDateF
FROM `Session`
WHERE `Session`.acType='1'
) as AcDate
GROUP BY `Session`.userId)
WHERE YEAR(`Session`.acDateF) =YEAR(CURRENT_DATE())-1
如果用户今年在Session
表中有一条记录,那么它不会出现在结果中。
发布于 2013-01-10 23:33:38
你的问题不是很清楚,但听起来你想要这样的东西:
SELECT *
FROM `Session` s
INNER JOIN
(
SELECT MAX(`Session`.acDateF) as MaxDateF, `Session`.userId
FROM `Session`
WHERE `Session`.acType='1'
AND YEAR(s.acDateF) =YEAR(CURRENT_DATE())-1
GROUP `Session`.userId
) as AcDate
ON s.userId = AcDate.userId
AND s.acDateF = AcDate.MaxDateF;
或者,如果您需要用户数据:
SELECT *
FROM `user` u
INNER JOIN
(
SELECT MAX(`Session`.acDateF) as MaxDateF, `Session`.userId
FROM `Session`
WHERE `Session`.acType='1'
AND YEAR(s.acDateF) =YEAR(CURRENT_DATE())-1
GROUP `Session`.userId
) as AcDate
ON u.userId = AcDate.userId;
发布于 2013-01-10 23:33:16
SELECT
MAX(`Session`.acDateF) as MaxDateF,
`Session`.userId
FROM `Session`
WHERE `Session`.acType='1'
GROUP BY `Session`.userId
having MAX(YEAR(`Session`.acDateF)) as MaxDateF =YEAR(CURRENT_DATE())-1
发布于 2013-01-10 23:34:05
这是一种方法。它在where
子句中使用相关子查询来获取上一年的最后日期:
select *
from session s
where s.acDatef = (select MAX(se.acDatef)
from session s2
where s2.userid = s.userid and
YEAR(`Session`.acDateF) =YEAR(CURRENT_DATE())-1
)
https://stackoverflow.com/questions/14261290
复制相似问题