Вы можете использовать строковый метод find_in_set()
:
select t1.id table_1_id, t2.id table_2_id
from table_1 t1
inner join table_2 t2 on find_in_set(t2.name, replace(t1.delimited_col, ';', ','))
Но, что еще лучше, вы должны действительно исправить свою модель данных и сохранить каждое значение в список с разделителями в отдельной строке таблицы. Хранение данных CSV в реляционных базах данных не является хорошей практикой и может повредить вам во многих отношениях. Здесь - это известный пост SO, в котором подробно рассматриваются эти топики c - на самом деле многие вопросы, связанные со списками с разделителями, закрываются как дубликаты к этому посту здесь, на SO.
Если вы хотите создать новую таблицу с результатами запроса, то:
create table table_3(id int auto_increment, table_1_id, table_2_id);
insert into table_3 (table_1_id, table_2_id)
select t1.id, t2.id
from table_1 t1
inner join table_2 t2 on find_in_set(t2.name, replace(t1.delimited_col, ';', ','));