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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM