如何按ID显示每天一条记录?

时间:2012-04-01 17:47:55

标签: php sql distinct

我有这个小剧本,每天都有一个智慧。

所以我有三列。

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小时更新智慧日期的计数器? 请给我一些帮助。

2 个答案:

答案 0 :(得分:2)

您可以创建另一个名为wisdom_of_day

的表

该表格包含以下列:id,wisdom_id,date

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

然后,您可以根据日期查询来检索当天的智慧。


我可能会错误地阅读您的问题而您只想为每一天选择一个智慧,但您想要显示多天并希望从表格中获取数据。

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


这是一个将按日分组的查询。这只有在你有一个时间戳字段并且没有在int列上存储unix timstamp时才有效。

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

嗯,我注意到你的时间戳值是某种日期格式,可能是一个字符串?如果是这样,上述查询可能无效。

答案 1 :(得分:1)

自1970年以来的首次计算天数

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

然后在RAND中插入此号码,例如:

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

以数字为参数的Rand是确定性的。

完整查询:

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