gpt4 book ai didi

sql - 删除行后如何对 id 列重新排序(不是自动递增)

转载 作者:行者123 更新时间:2023-11-29 05:43:52 25 4
gpt4 key购买 nike

我有一个表'order_item'order_item_id 整数order_id 整型

主键是order_item_id + order_id

因此 order_item_id 和 order_id 都不是唯一的,但两列的组合是唯一的。

如果客户在他们的订单中添加多个项目,我们可以有一个这样的表

order_item_id   order_id
------------------------
1 5
2 5
3 5
4 5

...如果客户随后删除了 order_item_id 2,那么序列中就会出现空缺。 order_item_id 显示供客户引用,并在我们向供应商发送采购订单时使用。

有没有办法为特定的 order_id 重新排序 order_item_id?我已尝试以下操作,但不断出现重复键错误,并且它不断将第一个找到的项目 ID 更改为 0 而不是 1。

SET @i := 0;

UPDATE order_item
SET order_item_id = (@i := @i + 1)
WHERE order_id = 5
ORDER BY order_id, order_item_id

感谢您的帮助。

最佳答案

只要在排序时不要混淆 ID 和数字,就不会出现问题。后者甚至可以在客户端轻松完成。更改主键是一个非常糟糕的主意。

关于sql - 删除行后如何对 id 列重新排序(不是自动递增),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4420388/

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