有這麼一個需求,有個sys_org表mysql
可見這個code能夠like查詢全部子集沒有什麼問題,就是根據一個code值查詢這個code本身包括全部子集,這時候只須要一個like就能很簡單的查詢出來,正則表達式
可是如今有個中間表paper_org以下結構,sql
首先根據試卷id查出全部的code來,而後再根據這些code查詢出全部子集來,這時候再用like會直接報錯!函數
那麼該怎麼查詢呢,第一種先查詢全部的code來而後再遍歷查詢全部子集能夠實現,可是能直接一次查詢出來麼?code
這裏通過調研開始能夠實現的,目前只是實現,效率方便暫不考慮regexp
首先mysql有個regexp表達式 能夠直接這樣查詢 blog
那關鍵就是後面這個字符串了,第二步從中間表查出這個字符串,有個GROUP_CONCAT('|^',column)分隔字符串字符串
能夠看到字符串基本能夠了而後前面有了個匹配符^,繼續用concat函數以下get
這就是正則表達式想要的字符串,有了這個以後就好說了,而後直接以下class
select code from sys_org where code regexp (select code from (SELECT concat('^',GROUP_CONCAT(distinct code ORDER BY id DESC SEPARATOR '|^')) code FROM examine_paper_org where paper_id='1358321465280679938') a) ;
能夠看到能夠實現對於多個結果集的like寫法!好了這個小技能get到了嗎