记录一次特殊的列表查询,以便于以后查阅。
业务场景是这样的,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工程师,需求分析师