like動態查詢結果集的實現!

有這麼一個需求,有個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到了嗎

相關文章
相關標籤/搜索