MySQL Обновление столбца порядка сортировки с помощью счетчика - PullRequest
1 голос
/ 01 мая 2020

У меня есть таблица, в которую вставлены и удалены строки, что создает проблемы с порядком сортировки. Иногда я нахожу повторяющиеся значения SortOrder, такие как:

1 2 2 3 4 4

Я сбрасываю значения 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 и т. Д. c, но я не могу понять, как ОБНОВИТЬ результаты SELECT, чтобы заменить SortOrder на каждое новое значение со счетчика

1 Ответ

1 голос
/ 01 мая 2020

Предполагая, что ключ таблицы 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...