如何按id显示每日订单一条记录


how to show one record per day order by id?

我有一个小脚本,每天显示一种智慧。

所以我有三列。

Id         wisdom          timestamp
1          wisdon 1        4/1/2012
2          wisdon 2        4/1/2012
3          wisdon 3        4/2/2012

我想每天获取一个智慧数组

我浏览了你的网站,但不幸的是,我没有找到与我想要的相似的东西。

我也得到了这个代码

$sql = mysql_query("SELECT DISTINCT id FROM day_table group by timestamp");

但这也不起作用。有什么想法吗?

有可能使计数器24小时更新智慧日期吗?请帮我一下。

您可以制作另一个名为wisdom_of_day 的表

该表将具有以下列:id、wisdom_id、date

基本上每天你都可以从你的智慧表中随机选择一个智慧,并将其插入智慧日表中。您还可以向日期列添加一个约束,使其与众不同。重要的是,它是一个日期列,而不是时间戳,因为你不在乎时间。

然后,您可以通过基于日期的查询来检索当天的智慧。


我可能看错了你的问题,你只想每天选择一个智慧,但你想显示多天,你想从表中获得数据。

如果是这样,那么您的查询不起作用的原因是您正在按包含日期和时间的时间戳进行分组。您需要按日期对其进行分组,以便按您的意愿进行分组。


以下是一个将按天正确分组的查询。只有当您有一个时间戳字段并且没有在int列上存储unix时间戳时,这才会起作用。

select id, wisdom, date(timestamp) date_only from day_table group by date_only order by date_only asc;

嗯,我注意到你的时间戳值是某种日期格式的,也许是字符串?如果是这样的话,上面的查询可能不会起作用。

自1970年以来首次计算天数

SELECT DATEDIFF(CURDATE(), '1970-01-01')

然后在RAND中插入这个数字,例如:

SELECT * FROM table ORDER BY RAND(15767) LIMIT 1;

以数字为自变量的随机是确定性的。

完整查询:

SELECT * FROM table ORDER BY RAND((SELECT DATEDIFF(CURDATE(), '1970-01-01'))) LIMIT 1;