Я пытался найти решение для этого и нашел несколько похожих сообщений, но никто из них не ответил на мой вопрос.update from select incremental mysql
У меня плохо спроектированная таблица, в которой хранится индекс сортировки. Программно мы обновляем этот индекс, когда люди сортируют некоторые данные. Проблема в том, что теперь индексы выглядят примерно как 1, 2, 2, 3, 6, 6, 7, 8, 8, etc
, поэтому мне поручено решить эту проблему. Я исправил код, так что этого больше не происходит, но как обновить db? У меня есть таблица:
+---------+-------+---------+
| otherId | index | product |
| 3423 | 1 | zbhdfji |
| 63453 | 3 | fgdfgr |
| 75454 | 3 | drhfef |
+---------+-------+---------+
Мне нужно, чтобы это было как:
+---------+-------+---------+
| otherId | index | product |
| 3423 | 1 | zbhdfji |
| 63453 | 2 | fgdfgr |
| 75454 | 3 | drhfef |
+---------+-------+---------+
Я пытался что-то вроде:
update table set index = @rownum where otherId in (select other_id FROM table where index <= 200 order by index asc);
Но его не нравится, что я вытягивать из того же и я даже не уверен, что это сработает. Есть идеи?
Как он сортирует те же индексы? Правильно ли я думаю о сортировке с «otherId» по возрастанию? – MaHDyfo
lol Я сказал плохо спроектированный стол. нет инкрементирующего id. «otherId» кажется уникальным, но он исходит из другой таблицы, поэтому не увеличивается или ничего подобного. о сортировке одинаковых индексов ... это не ... сортировка, которую я видел в коде, сортирует ее по индексу asc и ограничивает ее до 200 строк –