将MYSQL字符串拆分为IN()可以理解的(数组,表达式,列表)

时间:2015-05-24 03:33:46

标签: mysql arrays string split

我创建了两个表:

A (A.id,A.name) 
B (B.A_ids) 

B.A_ids是表A.id的字段,与,连接。

现在我想查询name A.id所在的B.A_ids,就像这样:

select A.name from A where A.id in(1,2,3) ;

但是,1,2,3是来自B.A_ids的查询。

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

 SELECT A.* FROM A JOIN B
 WHERE (
   B.a_ids LIKE CONCAT(a.id,',%') 
   OR B.a_ids LIKE CONCAT('%,',a.id,',%')
   OR B.a_ids LIKE CONCAT('%,',a.id)
   OR B.a_ids = a.id 
 )
 AND B.... = ... 

表现可能不好。要获得更高效的设计,您应该在另一个表中存储一对多或多对多关系。

答案 1 :(得分:0)

我终于找到了一种使用find_in_set的方法:

select distinct(b.id),
       a.id,
       a.name,
       b.a_ids
from   A
where  find_in_set(a.id,b.a_ids);