SQL

MYSQL获取用户连续签到天数

canace
2022-04-09 / 0 评论 / 456 阅读 / 正在检测是否收录...

表结构:data date,uid string

SELECT
    count( 1 ) 
FROM
    (
    SELECT
        date_sub( a.data, INTERVAL 1 DAY ) signDate,
        ( @i := DATE_ADD( @i, INTERVAL - 1 DAY ) ) today 
    FROM
        ( SELECT data FROM user_dakas WHERE uid = "1" ORDER BY data DESC ) a
        INNER JOIN (
        SELECT
            @i := max( data ) AS signMax 
        FROM
            user_dakas 
        WHERE
            uid = "1" 
            AND ( TO_DAYS( data ) = TO_DAYS( curdate()) OR TO_DAYS( data ) = TO_DAYS( DATE_ADD( curdate(), INTERVAL - 1 DAY ) ) ) 
        ) b 
    WHERE
        b.signMax IS NOT NULL 
        AND TO_DAYS(
        DATE_ADD( @i, INTERVAL - 1 DAY )) = TO_DAYS( date_sub( a.data, INTERVAL 1 DAY ) ) 
    ) c
0

评论

博主关闭了所有页面的评论