如何用Unix时间戳查询MySQL最近24小时的用户名与对应评论数
解决方案
你只需要新增对Unix时间戳字段review_creation_time的范围筛选即可,这里根据你是否需要保留无最近24小时评论的用户,提供两种修改方案:
方案1:保留所有用户,无符合条件评论的用户评论数显示为0
将时间筛选条件加在LEFT JOIN的关联规则中,避免过滤掉没有对应评论的用户:
SELECT u.username, COUNT(c.review) AS totalreview FROM un_users u LEFT JOIN coin_review c ON c.wallet_address = u.wallet_address AND c.review_creation_time >= UNIX_TIMESTAMP() - 86400 GROUP BY u.username ORDER BY u.username
方案2:仅返回最近24小时有评论的用户
将时间筛选条件加在WHERE子句中,自动过滤无符合条件评论的用户:
SELECT u.username, COUNT(c.review) AS totalreview FROM un_users u LEFT JOIN coin_review c ON c.wallet_address = u.wallet_address WHERE c.review_creation_time >= UNIX_TIMESTAMP() - 86400 GROUP BY u.username ORDER BY u.username
注意事项
- 请保持字段名大小写和表结构一致,你原SQL中写的
c.Review需要和实际字段名review对齐,避免出现字段找不到的报错 - 如果你的
review_creation_time存储的是毫秒级Unix时间戳,将时间阈值计算逻辑替换为UNIX_TIMESTAMP() * 1000 - 86400 * 1000即可
内容的提问来源于stack exchange,提问作者amit
相关产品推荐
相关产品推荐

