gpt4 book ai didi

mysql - 更改MySQL查询执行顺序

转载 作者:行者123 更新时间:2023-12-02 19:19:22 25 4
gpt4 key购买 nike

我想在数据库中添加一个 id 为 2 的条目。为了做到这一点,我将所有超过 2 的记录移动到 id + 1。

UPDATE
`pedo_meta`
SET
`id` = `id` + 1
WHERE
`id` > 1;

因为id是主键。此查询失败:

#1062 - key “PRIMARY”的条目“3”重复。我知道发生这种情况是因为查询执行从上到下开始,当查询尝试创建 id 2 到 id 3 的列时,会发生重复条目错误,因为 id 3 列已经存在。

我相信如果我们颠倒执行顺序就可以解决这个问题。因此,查询首先将 id 设为 537 到 538,然后从 536 到 537,依此类推。那么有没有办法反转MySQL中查询的执行顺序

最佳答案

您可以在 UPDATE 语句上使用 ORDER BY 来影响行更新的顺序:

If the ORDER BY clause is specified, the rows are updated in the order that is specified.
source: https://dev.mysql.com/doc/refman/8.0/en/update.html

因此您可以使用以下UPDATE语句:

UPDATE `pedo_meta`
SET `id` = `id` + 1
WHERE `id` > 1
ORDER BY `id` DESC;

demo on dbfiddle.uk


注意:如果您想更改项目的排序顺序,则不应使用 ID 列。您可以添加额外的数字列来定义排序顺序。 ID 列只能用于标识表中的记录。

关于mysql - 更改MySQL查询执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60447066/

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