Хранение в строке таблицы sql id - шников из другой таблицы
Представим, что в столбце одной таблицы в виде строки нефиксированной длины хранится совокупность айдишников из другой таблицы (разделенная каким-либо символом). Например "12,17,146,54,39". Как я могу менять порядок элементов в строке (удалять элементы, перемещать, заменять) используя только СУБД (MySQL 8.0)?
Ответы (1 шт):
Лучше было бы подумать о нормализации - ибо CSV есть весьма плохой способ хранения. Заодно это позволит иметь вменяемое поле порядка (абсолютного либо связного).
В нынешней же форме представления я бы предложил преобразовать этот CSV в JSON-массив. Либо изменить структуру хранения, либо делать это прямо в запросе (обычного CONCAT достаточно).
Ну а дальше - парсинг и пересборка в нужном порядке. Либо, если делать на внешнем управлении по шагам, просто удаление, замена или переприсвоение (обмен местами двух элементов) штатными JSON-функциями.