我有一个表,其中插入和删除了行,这对排序顺序产生了问题。有时我发现重复的SortOrder值,例如:
122344
我重置了SortOrder值-我似乎无法找出正确的查询。
例如
表1包含列:ssID,showID,sName,sDisplay,SortOrder
主键是ssID
当插入/删除新数据时,我需要重置SortOrder
我可以通过以下方式获得所需的SortOrder值:
SET @t1=0;
SELECT *,
@t1 := @t1+1 As counter
FROM Table1
WHERE showID = 123
ORDER BY SortOrder ASC
由此,'counter'填充了1、2、3、4、5等,但是我不知道如何更新SELECT的结果以将SortOrder替换为来自计数器的每个新值
假设table1的主键是your_table1_primary_key
列
您可以尝试使用
SET @t1=0;
UPDATE Table1
INNER JOIN (
SELECT your_table1_primary_key, @t1 := @t1+1 As counter
FROM Table1
WHERE showID = 123
ORDER BY SortOrder ASC
) t on t.your_table1_primary_key = Table1.your_table1_primary_key
SET Table1.SortOrder = t.counter