我正在构建最受欢迎的文章系统,我将 ID 发送到数据库并将 total_views 值增加 1,但我不知道如何检索最受欢迎的值。我试过按价值获取,但我是 sql 的新手,不知道要搜索什么。$servername = "";$username = "";$password = "";$dbname = "";$conn = mysqli_connect($servername, $username, $password, $dbname);if (!$conn) { die("Connection failed: " . mysqli_connect_error());}$id = '44441';$sql = "SELECT id FROM top_pages WHERE id='$id'";$result = mysqli_query($conn, $sql);if (mysqli_num_rows($result) > 0) { echo 'exist'; $update = "UPDATE top_pages SET total_views = total_views + 1 where id='$id'"; mysqli_query($conn, $update);} else { echo 'not found'; $insert = "INSERT INTO top_pages (id,total_views) VALUES ('$id', '1')"; mysqli_query($conn, $insert);}mysqli_close($conn);我对代码的期望是根据过去 8 小时内的 total_views 提取前 10 个 ID,因此仅存储/更新过去 8 小时内的最高值。
2 回答
ibeautiful
TA贡献1993条经验 获得超5个赞
添加日期列后,您可以获得过去 8 小时的数据,如下所示:
SELECT id FROM top_pages
WHERE your_date_column_name > DATE_ADD(NOW(), INTERVAL -8 HOUR)
ORDER BY total_views DESC LIMIT 10
使用INTERVAL -8 HOUR中得到8小时前的数据
ORDER BY total_views DESC 获得最高观看次数记录
LIMIT 10 限制记录
米脂
TA贡献1836条经验 获得超3个赞
您当前表示数据的方式对您没有帮助,因为您没有任何关于何时total_views更新的信息。让我们假设一个top_pages条目是在 30 天前创建的,并且 total_views 为 3000。无法确定这 3000 次中有多少是在过去 8 小时内完成的。
相反,拥有这样的表格要好得多:
访问(id,page_id,visit_timestamp)
然后这样做
select page_id, count(*)
from visits
group by page_id
where visit_timestamp >= DATE_SUB(NOW(), INTERVAL 8 HOUR)
order by count(*) desc
limit 0, 10;
- 2 回答
- 0 关注
- 126 浏览
添加回答
举报
0/150
提交
取消