gpt4 book ai didi

mysql - 如何自动限制数据库中的行数?

转载 作者:行者123 更新时间:2023-11-29 01:45:04 25 4
gpt4 key购买 nike

我有下表

+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| ID | int(11) unsigned | NO | PRI | NULL | auto_increment |
| userid | int(10) unsigned | NO | MUL | NULL | |
| logintime | int(10) unsigned | NO | | NULL | |
| loginIP | int(4) unsigned | NO | | NULL | |
+-----------+------------------+------+-----+---------+----------------+

每次用户登录时,我都会在这个表中插入一个新行,其中包含他们的登录时间、IP 地址等...

现在我想将每个用户的行数限制为 10 行!即,如果 userid 5 已经有 10 行,并且我要插入一个新行,我需要在插入之前删除其中最旧的一行。

有没有一种方法可以编写一个 SQL 语句,DELETE删除用户标识的所有条目,除了最近的 10 个条目。我知道如何将 LIMIT 用于 SELECT,但我看不出如何在 DELETE 中实现 LIMIT。

最佳答案

按照这些思路应该可以工作:

DELETE FROM
table
WHERE
userID = xyz and id not in (
SELECT id FROM table WHERE userID = xyz ORDER BY logintime DESC LIMIT 10
)

-- 添加:其中 userID = xyz

关于mysql - 如何自动限制数据库中的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9198402/

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