Php 按时间戳为<;24小时(MySQL)

Php 按时间戳为<;24小时(MySQL),php,sql,mysql,sql-order-by,Php,Sql,Mysql,Sql Order By,我有一个满表的条目和日期时间戳,还有一个ID字段。我想做一个MySQL查询(在我的PHP脚本中),从另一个具有匹配ID的表中进行选择。我想做某种连接,它将根据第一个表中的条目数进行排序,时间戳超过24小时。因此,基本上,如果第一个表中有30个条目的时间戳小于24小时,ID为“334”,那么我想从第二个表中选择ID为334的行。这应该出现在ID为“234”的条目之前,该条目在过去24小时内只有20个条目 我希望这是清楚的。。。我真的不知道该怎么做,所以谢谢你的帮助D试试: Select b.Col

我有一个满表的条目和日期时间戳,还有一个ID字段。我想做一个MySQL查询(在我的PHP脚本中),从另一个具有匹配ID的表中进行选择。我想做某种连接,它将根据第一个表中的条目数进行排序,时间戳超过24小时。因此,基本上,如果第一个表中有30个条目的时间戳小于24小时,ID为“334”,那么我想从第二个表中选择ID为334的行。这应该出现在ID为“234”的条目之前,该条目在过去24小时内只有20个条目

我希望这是清楚的。。。我真的不知道该怎么做,所以谢谢你的帮助D

试试:

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
如果还希望查看表B中过去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
使用:


谢谢你的回复!我需要一段时间来尝试每件事,并弄清楚它在做什么,但如果它对我有效,我会让你知道。再次感谢。也感谢您的回复!我也会试试这个,然后再打给你。好像你在
ON
子句中丢失了
=a.id
。不是吗?如果您的类型是TIMESTAMP,请立即替换为当前的\u TIMESTAMP
  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