[使用计数器更新MySQL排序顺序列

问题描述 投票:0回答:1

我有一个表,其中插入和删除了行,这对排序顺序产生了问题。有时我发现重复的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替换为来自计数器的每个新值

mysql
1个回答
0
投票

假设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
© www.soinside.com 2019 - 2024. All rights reserved.