2011-05-19 73 views
0

我有一个表有一些数据损坏。更新一对多关系的多方内部列表索引

该表具有一对多关系的许多方面,例如, order和orderItem。

订单商品在列表中,并且代码使用索引保持订购。该索引有时会失序,因此索引条目不是0,1,2,3等,而是0,3,4,4或1,2,3,4,5等。

我有一个查询,确定发生这种情况的订单,但现在想要能够

我正在使用MySQL 5.077。

此链接为不同数据库提供解决方案,但不确定如何采用MySQL。 http://haacked.com/archive/2004/02/28/sql-auto-increment.aspx

任何提示赞赏。

回答

1

这个怎么样:

SET @RowCount = -1; 

UPDATE <table> 
SET <index> = (@RowCount := @RowCount + 1) 
WHERE ... 
ORDER BY ...; 

如果需要重新分配指数以特定的顺序,你可以使用ORDER BY。我不认为这会起作用,但它适用于我。

+0

非常感谢!一段时间以来一直在挣扎着。 – 2011-05-20 08:43:55