SELECT t1.*,
COUNT(CASE WHEN t2.time >= UNIX_TIMESTAMP() - 86400) AS 24_hours,
COUNT(CASE WHEN t2.time >= UNIX_TIMESTAMP() - 172800) AS 48_hours,
COUNT(CASE WHEN t2.time >= UNIX_TIMESTAMP() - 259200) AS 72_hours
FROM table1 AS t1
LEFT JOIN table2 AS t2 ON t2.t1_id = t1.id
这不起作用,我正在尝试计算,添加 3 个字段,每个字段 3 个时间段。我们需要计算第二个表中的记录数......
要计算第二个表中随时间变化的记录数,您需要使用聚合函数
COUNT()以及条件表达式SUM()或其他聚合函数。如果您想添加三个字段来显示过去 24、48 和 72 小时内的记录数,则可以按如下方式修改您的查询:查询解析:
1.
SUM(CASE WHEN ... THEN 1 ELSE 0 END):该结构统计满足条件的次数,每条符合条件的记录加1。这样,对于每个时间段,您将获得相应的记录数。2.
GROUP BY t1.id:按第一个表中的 ID 进行分组,以获取来自 的每条记录的汇总结果table1。3.
LEFT JOIN:用于获取所有记录,table1即使它们在 中没有对应的记录table2。此查询应正确计算每个时间段的记录数,并将其作为第一个表中每个记录的单独列返回。