Как сравнить значение со значением CSV в MySQL? - PullRequest
2 голосов
/ 30 марта 2012

Таблица 1

id(int) |  name(varchar)
1       |  at,bat
2       |  cat,at,bat,mat
3       |  mat,cat
4       |  sat,bat

Таблица 2

id(int)  |  type(varchar)
1        |  at
2        |  mat

Как видите, таблица table1 содержит строки csv. Теперь мне нужно получить id s из Table 1, чьи name существуют в поле типа Table2.

Есть ли какой-нибудь чистый способ запроса MySQL? если нет, то каков наиболее эффективный способ сделать это в случае больших наборов записей?

Ответы [ 2 ]

5 голосов
/ 30 марта 2012

Я бы использовал FIND_IN_SET(str,strlist):

select distinct t1.id
from table1 t1
join table2 t2 on find_in_set(t2.type, t1.name) > 0

Рабочий пример: http://sqlfiddle.com/#!2/b642c/4

2 голосов
/ 30 марта 2012

См. здесь

select a.ids as id1, b.ids as id2, a.name,b.type
from table1 a
inner join table2 b on find_in_set(b.type,a.name) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...