[英]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.