2010-03-29 2 views
1

У меня есть два таблицы в MySQL один tbl_a, который имеет один столбец INT идентификатор, второго tbl_b, который имеет один song_ids столбцов, в которых хранятся данные, seapated запятой, как 1,2,3,4Mysql динамического запрос

я хотите выбрать все идентификатор, как этот

select * from tbl_a where id in (select song_id from tbl_b) 

, но его не дает мне никаких записей, как его VARCHAR , как сделать это в MySQL

ответ

2

Правильный путь:

Изменение структуры базы данных; это не нормализуется. У вас должна быть таблица ссылок между tbl_a и tbl_b, где у вас есть два поля: a_id и b_id. Затем с помощью запроса, такие как:

SELECT * FROM tbl_a 
INNER JOIN tbl_link ON tbl_link.a_id = tbl_a.id 
INNER JOIN tbl_b ON tbl_b.id = tbl_link.b_id 

ленивых, неправильно:

SELECT * FROM tbl_a INNER JOIN tbl_b 
WHERE FIND_IN_SET(tbl_b.song_id, tbl_a.id) 
0

, что это неправильно дизайн базы данных. tbl_b должен иметь 2 колонки, a_id и song_id оба целого типа

для запроса вы должны дать более подробную информацию о таблицах относительно

0

Я хотел бы рассмотреть вопрос реорганизации таблиц до решения этой проблемы. Почему dela с головными болями данных с разделителями-запятыми?

Смежные вопросы