首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于获取最后一条记录的子查询

用于获取最后一条记录的子查询
EN

Stack Overflow用户
提问于 2013-01-10 23:25:10
回答 3查看 2.6K关注 0票数 0

我有两张表:UserSession。对于每个用户,我想知道会话表中的最后一条记录是否是去年创建的。

我尝试了以下方法,但不起作用:

代码语言:javascript
运行
复制
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表中有一条记录,那么它不会出现在结果中。

EN

回答 3

Stack Overflow用户

发布于 2013-01-10 23:33:38

你的问题不是很清楚,但听起来你想要这样的东西:

代码语言:javascript
运行
复制
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;

或者,如果您需要用户数据:

代码语言:javascript
运行
复制
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;    
票数 2
EN

Stack Overflow用户

发布于 2013-01-10 23:33:16

代码语言:javascript
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2013-01-10 23:34:05

这是一种方法。它在where子句中使用相关子查询来获取上一年的最后日期:

代码语言:javascript
运行
复制
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
                  )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14261290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档