我想在数据库中输入一个id为2的条目,为了做到这一点,我将所有超过2的记录移动到id + 1。
UPDATE
`pedo_meta`
SET
`id` = `id` + 1
WHERE
`id` > 1;因为id是主键。此查询未能说明:
#1062 - Duplicate entry '3' for key 'PRIMARY'。我知道这是因为查询执行从上到下开始,当查询试图使列具有id 2到id 3时,会发生重复的条目错误,因为id 3列已经存在。
我相信如果我们颠倒执行顺序,这个问题是可以解决的。因此,查询首先生成id 537到538,然后是536到537,以此类推。因此,是否可以逆转MySQL中查询的执行顺序?
发布于 2020-02-28 07:31:35
可以对ORDER BY语句使用UPDATE语句来影响行的更新顺序:
如果指定了
ORDER BY子句,则按指定的顺序更新行。
来源: 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;备注:如果您想更改项的排序顺序,则不应该使用ID列。您可以添加一个额外的数字列来定义排序顺序。ID列仅用于标识表中的记录。
发布于 2020-02-28 07:30:35
下面是一个简单的快速实现算法:
创建一个新的列new_id
new_id = id + 1
id,并在完成
时将其设置为id = new_id
new_id。如果您想在之后排序您的项目,最好创建一个新的列sort_order,可以非常快地更新.
https://stackoverflow.com/questions/60447066
复制相似问题