gpt4 book ai didi

mysql - 按限制更新订单给我一个错误

转载 作者:行者123 更新时间:2023-11-29 10:39:46 24 4
gpt4 key购买 nike

我想使用 order by 和 limit 更新表。原因是我想抵消前 3 个条目。我首先进行查询以列出我想要更新的内容,这很有效。

SELECT `Name`,`active`
FROM `tlogon`
WHERE `active`>0 ORDER BY `id` LIMIT 3,18446744073709551610

所以我的表中有 8 个项目,它显示最后 3 个是正确的,因为其中 2 行的事件值为零。所以然后我尝试将我的选择变成这样的更新。

UPDATE `tlogon` SET `active`=3
WHERE `active`>0 ORDER BY `id` LIMIT 3,18446744073709551610

这里的想法是,它获取一个 active 列表并忽略前 3 个,然后我只想在前三个之后更新。然而上面的代码在 phpmyadmin 中给出了一个错误。

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '18446744073709551610' at line 2

所以我的问题是。为什么我的选择有效,但更新查询失败?

编辑

好吧,我尝试过其他方法,但我再次失败了。我的 id 是自动递增的,所以我尝试了以下代码

UPDATE `tlogon` SET `active`=3
Where `id`>=(
SELECT `id`
FROM `tlogon`
WHERE `active`>0 ORDER BY `id` LIMIT 3,1
)

现在它可以在模拟中工作,但是当我真正执行此操作时,我会收到此错误。

#1093 - You can't specify target table 'tlogon' for update in FROM clause

这很烦人,因为我正在做的就是让第一个 id 超出我的限制并更改它们,但我再次失败了。

然后我想到了这样的右连接

UPDATE `tlogon` AS `a`
RIGHT JOIN `tlogon` AS `b` ON `a`.`id`>`b`.`id`
SET `a`.`active`=3
WHERE (
SELECT `id`
FROM `b`
WHERE `tlogon`.`active`>0 ORDER BY `tlogon`.`id` LIMIT 3,1
)

但我认为我做错了什么,因为现在它告诉我表 b 不存在。

最佳答案

UPDATE语句不支持 LIMIT 的偏移量,仅支持要更新的行数。

其语法为:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name={expr | DEFAULT},
[, col_name={expr | DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]

您需要找到另一种方法来忽略前 3 行。

关于mysql - 按限制更新订单给我一个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718116/

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