【发布时间】:2010-12-12 04:24:23
【问题描述】:
我有一个表'order_item' order_item_id 整数 order_id int
主键是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
感谢您的帮助。
【问题讨论】:
-
谢谢!由于“:=”分配,我假设 Vijer 正在使用 MySql。如果 SQL Server 允许这些,我会认为我大吃一惊!