我希望能够更新ID最高的行。 问题是:我找不到任何优雅的解决方案来做到这一点。 到目前为止,这是我最好的尝试:
$highestId = mysql_result(mysql_query('SELECT MAX(id) FROM stats'),0);
mysql_query("UPDATE stats SET views = views +1 WHERE id = $highestId");
也许有一种比我想象的更好的方法。
任何关于如何解决这个问题的建议都是受欢迎的,即使这是一个完全不同的方法。
表stats => id | views
答案 0 :(得分:7)
是:
UPDATE stats SET views = views +1 ORDER BY id DESC LIMIT 1
答案 1 :(得分:4)
如果您没有遭受表格排序,可以使用@ dev-null-dweller版本。或者您可以使用子查询。
UPDATE stats SET views = views +1 WHERE id = (SELECT * FROM (SELECT MAX(id) FROM stats) id)
您可以分析这两种解决方案,看看哪种解决方案最适合您的情况。
我认为以下将是您跟踪统计数据的最佳解决方案,不需要cronjob。
创建一个包含两列的表
表:stats
列:stat_date
(DATE)PRIMARY,views
(INT)
然后运行查询:
$query = "INSERT INTO stats(stat_date, views) VALUES('".date('Y-m-d')."', 1) ".
'ON DUPLICATE KEY UPDATE views = views + 1';
编辑:我之前为DATETIME
列建议了stat_date
类型,但显然DATETIME
对您没有意义,因为你只想要一天的记录而不是一秒钟。因此,我将DATETIME
类型替换为DATE
。
答案 2 :(得分:2)
您还可以按ID desc对结果进行排序,只需编辑第一个结果。
编辑:太晚了抱歉。 :)