mysql中要根据某个逗号分割的字符串关联查询另一张表的数据
首先观察下面的查询
select * from company where f_id in ('210','205','208')
select * from company where f_id in ('210,205,208')
现在我要根据另一张模板表中的一个字段查询他下面的公司,存的是字符串类型
这时
select * from company where f_id in (select company_id from templet where f_id=583)
只查询出一条数据,说明他查询的结果是一个字符串'210,205,208',而我们需要的是'210','205','208',
这时会想到分割,但是发现需要循环很麻烦。这里提供正则表达式的方式解决如下
先把字符串替换成正则需要的样式,把‘210,205,208’转成210|205|208,再用正则匹配
SELECT
*
FROM
company
WHERE
f_id REGEXP (
SELECT
REPLACE (
(
SELECT
company_id
FROM
templet
WHERE
f_id = 583
),
',',
'|'
)
)