成功的路上总是离不开贵人的帮助,名师的指点和小人的刺激。

莫怕,过了桥,就翻篇了

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
   ),
     ',',
   '|'
)
)

 

posted on 2017-11-15 17:17  痞子陈2016  阅读(8444)  评论(1编辑  收藏  举报

导航