記錄一次特殊的列表查詢,以便於以後查閱。
業務場景是這樣的,a表有字段id,ids,ID= 11 ids= 1,2 等字符串,b表 有字段 id, name 字段,內容如 id= 1 name = java工程師,ID =2 name = 需求分析師,id = 3 name = ui設計,id = 3 name = web前端 等內容 ,a表字段ids 值爲b表取值集合,要求 取出a表字段ids 展示中文名稱 Java工程師,需求分析師
數據庫 是oracle11g
思路分析,多於複雜的字段且有規律的字段查詢 此刻想到的是REGEXP_LIKE函數,REGEXP_LIKE (a.ids,b.id),取出 符合條件的a表id,b表name,列表 11,java工程師,11 ,需求分析師,相當於一次拆分,然後怎麼做就比較明瞭了,對a表id做分組,wm_concat函數對name做組合,最終得到結果 11 java工程師,需求分析師
完整sql語句如下:select a.*,( select temp.name from
(select aa.id,wm_concat(b.name) name
from a aa,
b b
where REGEXP_LIKE (aa.ids,b.id)
group by a.id) temp where temp.id = a.id) name from a a
查詢結果 11 1,2 java工程師,需求分析師