gpt4 book ai didi

php - 根据计数更新一组记录 - MySQL

转载 作者:行者123 更新时间:2023-11-29 12:24:08 27 4
gpt4 key购买 nike

我的表中有 100 条事件记录 - 汽车。用户已决定降级其帐户,现在只能拥有 5 条事件记录。我需要将 95 条记录(最旧的记录在前)的到期日期设置为当前时间戳。我如何在 MySQL 中执行此操作 - 如果您包含一些 cakephp 提示,我会额外感谢您(但我会感谢您仅提供 SQL 提示)

这是我尝试过的,但收到一条错误消息,指出 mySQL 不支持子查询中的 LIMIT

UPDATE cars 
SET archived = NOW()
WHERE id NOT IN (
SELECT id
FROM cars
ORDER BY created DESC LIMIT 5
)

最佳答案

MySQL documentation没有解释为什么不支持这种类型的子查询中的 LIMIT 子句。然而,子子查询则没有这样的限制。

要解决此问题,让我们创建另一个子查询并将 LIMIT 子句移入其中:

WHERE id NOT IN (
SELECT id
FROM (
SELECT id
FROM cars
ORDER BY created
DESC LIMIT 5
)
AS carsInner
)

最里面的查询只会选择最后五行,并且存在只是为了满足子查询不应包含 limit 子句的要求。

最终查询如下:

UPDATE cars 
SET `archived` = NOW()
WHERE id NOT IN (
SELECT id
FROM (
SELECT id
FROM cars
ORDER BY created
DESC LIMIT 5
)
AS carsInner
);

See an SQL Fiddle demo here .

关于php - 根据计数更新一组记录 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28597091/

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