Пожалуйста, скопируйте свой код в реальную публикацию и предоставьте код, который вы пытались использовать для решения проблемы.
Функция substring_index возвращает часть строки с некоторым разделителем (здесь запятая), и когда передается отрицательный индекс, она начинает поиск совпадений с противоположной стороны, поэтому -1
берет один элемент из того, что в противном случае было бы многоэлементным списком ( для индекса>=2).
Согласно нашему обсуждению, я подправил, как я это сделал, и показал пример использования автоинкремента. (Это запускается в части скрипки «Схема сборки».)
create table TAGS
(`T_ID` int auto_increment primary key, `T_Name` varchar(18))
;
insert ignore into TAGS (T_Name)
SELECT
SUBSTRING_INDEX(RES_Tags, ',', 1) as X
FROM RESOURCES
;
insert ignore into TAGS (T_Name)
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(RES_Tags, ',', 2)
,',',-1)
FROM RESOURCES
;
insert ignore into TAGS (T_Name)
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(RES_Tags, ',', 3)
,',',-1) as X
FROM RESOURCES
;
insert ignore into TAGS (T_Name)
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(RES_Tags, ',', 4)
,',',-1) as X
FROM RESOURCES
;
insert ignore into TAGS (T_Name)
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(RES_Tags, ',', 5)
,',',-1) as X
FROM RESOURCES
;
insert ignore into TAGS (T_Name)
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(RES_Tags, ',', 6)
,',',-1) as X
FROM RESOURCES
;
create table New_TAGS like TAGS;
insert into New_TAGS (T_Name)
select distinct trim(T_Name)
from TAGS;
drop table TAGS;
rename table NEW_TAGS to TAGS;
документация функции подстроки Возможное дублирование этого вопроса
person
Brian Dewhirst
schedule
08.11.2017
tags.res_tags
, разбейте строку на массив и запустите цикл, чтобы вставить несколько строк в новую таблицу, по одной строке на тег. - person Bill Karwin   schedule 09.11.2017