2015-06-07 2 views
0

Я ищу, чтобы разделить один из моих столбцов MySQL, поскольку он состоит из слов, разделенных через (запятые). Мне нужно разделить данные на (,), а также собрать соответствующий идентификатор, чтобы я мог поместить его в другую таблицу. Самый простой способ сделать это.MySQL разбил колонку с помощью ID

например От: Текущий

frog -- Table 
ID common_name 
1 Yellow-spotted Tree Frog, Yellow-spotted Bell Frog 

To:

common_name_frog -- Table 
Frog_id Common_name 
1  Yellow-spotted Tree Frog 
1  Yellow-spotted Bell Frog 
+0

Самый простой способ для хранения одного (ID, общее имя) запись для каждой строки, а не иметь разделенный запятыми список в столбце. Вы сражаетесь со своими dbms, а не используете его как реляционный db. – Hammerite

+0

Правильно это то, что я ищу. Это была загруженная таксономия, и в этой колонке уже была эта колонка, но я не хотел проходить через 7k записей вручную. Раскол, поэтому я могу создать вторую таблицу. –

+0

Ну ладно, справедливо. – Hammerite

ответ

1

Один метод для экспорта данных и использовать другой инструмент. Если строки не слишком долго, вы можете сделать что-то вроде этого:

create table common_name_frog as 
    select f.id, 
      substring_index(substring_index(common_name, ', ', n.n), ', ', -1) as Common_name 
    from (select 1 as n union all select 2 union all select 3) n join 
     frog f 
     on n.n <= length(common_name) - length(replace(common_name, ',', '')) + 1; 
+0

Можно ли исключить нулевые результаты? поскольку в данных имеются некоторые пробелы. –

+0

УДАЛИТЬ ИЗ common_name_frog WHERE common_name IS NULL; или DELETE FROM common_name_frog WHERE common_name = ''; –

+0

Вы можете добавить 'запрос Comon_Name не равен null 'в запрос. Это использует расширение MySQL для предложения 'having' –