繁体   English   中英

按时间戳小于24小时的记录数量排序(MySQL)

[英]ORDER BY the quantity of records with a timestamp of < 24 hours (MySQL)

我有一个充满DATETIME时间戳和ID字段的条目表。 我想做一个MySQL查询(在我的PHP脚本中),该查询从另一个具有匹配ID的表中选择。 我想进行某种连接,该连接将按第一个表中的条目数进行排序,且其时间戳记要比24小时更新。 因此,基本上,如果第一张表中的30个条目的时间戳少于24小时,且ID为“ 334”,那么我想从第二张表中选择ID为334的行。这应该在条目之前ID为“ 234”且在过去24小时内只有20个条目的用户。

我希望这很清楚...我真的对如何执行此操作感到很困惑,因此感谢您的帮助。 :d

采用:

  SELECT a.*, 
         x.num
    FROM TABLE_A a
    JOIN (SELECT t.id,
                 COUNT(*) AS num
            FROM TABLE_B t
           WHERE t.timestamp BETWEEN DATE_SUB(NOW, INTERVAL 1 DAY)
                                 AND NOW()
        GROUP BY t.id) x ON x.id = a.id
ORDER BY x.num DESC

尝试:

Select b.ColA, b.ColB, b.ColC,-- etc.
  Count(*) count
From TableB b 
   Join TableA a
     On a.Id = b.Id
        And a.TimeStamp > getDate() - 1
Group By b.ColA, b.ColB, b.ColC -- etc.
Order By Count(*) Desc

如果您还希望查看TableB中在过去24小时内没有时间戳的行,请使用外部联接:

 Select b.ColA, b.ColB, b.ColC,-- etc.
  Count(*) count
 From TableB b 
   Left Join TableA a
     On a.Id = b.Id
        And a.TimeStamp > getDate() - 1
 Group By b.ColA, b.ColB, b.ColC -- etc.
 Order By Count(*) Desc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM