gpt4 book ai didi

mysql - 在mysql中保存页面浏览量

转载 作者:行者123 更新时间:2023-11-30 01:34:23 25 4
gpt4 key购买 nike

我在 mysql 数据库中有一个用户表,如下所示:

+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(255) | YES | | NULL | |
| password | varchar(255) | YES | | NULL | |
| recent | varchar(255) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+

我需要保存用户最近查看过的 20 个 id。我的第一 react 是使用字符串来保存逗号分隔的列表,但这违反了规范化。我需要保存的只是 20 个 ID,并且是某个特定用户查看了它们。

我能想出的最好的办法,保持标准化,是这样的:

users
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(255) | YES | | NULL | |
| password | varchar(255) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+

users_pages
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| users_id | int(11) | YES | MUL | NULL | |
| pages_id | int(11) | YES | MUL | NULL | |
+-------------+--------------+------+-----+---------+----------------+

pages
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| page01 | int(11) | YES | | NULL | |
| page02 | int(11) | YES | | NULL | |
| page03 | int(11) | YES | | NULL | |
| page04 | int(11) | YES | | NULL | |
| page05 | int(11) | YES | | NULL | |
| page06 | int(11) | YES | | NULL | |
| page07 | int(11) | YES | | NULL | |
| page08 | int(11) | YES | | NULL | |
| page09 | int(11) | YES | | NULL | |
| page10 | int(11) | YES | | NULL | |
| page11 | int(11) | YES | | NULL | |
| page12 | int(11) | YES | | NULL | |
| page13 | int(11) | YES | | NULL | |
| page14 | int(11) | YES | | NULL | |
| page15 | int(11) | YES | | NULL | |
| page16 | int(11) | YES | | NULL | |
| page17 | int(11) | YES | | NULL | |
| page18 | int(11) | YES | | NULL | |
| page19 | int(11) | YES | | NULL | |
| page20 | int(11) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+

但我知道在列名称中包含数字并不理想。另外,我不知道如何更新第 21 页 View 上的表格。需要通过将第 21 个页面 View 放入 page20 列来进行更新,同时 page20 变为 page19,page19 变为 page18,依此类推,直到 page2 变为 page1,旧的 page1 被忘记。

我认为名为 CASCADE 的东西可能有用,但尽管使用 Google 搜索,我仍无法清楚地理解它的含义或如何使用它。

如果有什么不同的话,我将通过 PHP 访问 MySQL。

如果有人能让我更好地了解如何处理这个问题,我将非常感激。

最佳答案

试试这个:

select page_id 
from users_pages
where user_id = @user_id
order by id desc limit 20.

这应该可行,因为 users_pages 的 id 是 auto_increment (和主键),并且除非您不按照访问的顺序保存页面 View ,否则降序排序就可以解决问题。

关于mysql - 在mysql中保存页面浏览量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17097552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com