Хранение в строке таблицы sql id - шников из другой таблицы

Представим, что в столбце одной таблицы в виде строки нефиксированной длины хранится совокупность айдишников из другой таблицы (разделенная каким-либо символом). Например "12,17,146,54,39". Как я могу менять порядок элементов в строке (удалять элементы, перемещать, заменять) используя только СУБД (MySQL 8.0)?


Ответы (1 шт):

Автор решения: Akina

Лучше было бы подумать о нормализации - ибо CSV есть весьма плохой способ хранения. Заодно это позволит иметь вменяемое поле порядка (абсолютного либо связного).

В нынешней же форме представления я бы предложил преобразовать этот CSV в JSON-массив. Либо изменить структуру хранения, либо делать это прямо в запросе (обычного CONCAT достаточно).

Ну а дальше - парсинг и пересборка в нужном порядке. Либо, если делать на внешнем управлении по шагам, просто удаление, замена или переприсвоение (обмен местами двух элементов) штатными JSON-функциями.

→ Ссылка