mysql - 子查询获取最后一条记录

标签 mysql sql

我有 2 个表:UserSession。对于每个用户,我想知道 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 表中拥有记录,则该记录不会出现在结果中。

最佳答案

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

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;    

关于mysql - 子查询获取最后一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14261290/

相关文章:

php - 如何使用 PHP 在 MySql 中识别具有所有唯一字段值的行?

php - MySQL Order by,然后更新 Inner Join

javascript - 使用NodeJS在mySQL中插入多条记录以防止注入(inject)并获取每条记录的ID

mysql - 每个俱乐部成员(member)的 WooCommerce 购买摘要 (mySQL)

php - 如果我知道MySQL中同一行中其他列的值,如何获取该列的值?

sql - 使用 Oracle 进行简单的 SQL 查询时遇到问题

mysql - 使用相同的 ID NUMBERS 从一个表向另一个表插入值

php - mysql 日期和时间过滤器

php - mysql一次可以导入多少数据

sql - 查找数据中的序列并按其分组