A,B两个表,A表 a_b_id 字段存着以逗号或者某相同字符分割的值,每个值都关联 B表的 b_id 字段
A表——a_id、a_b_id :
B表——b_id、b_name:
想要实现的关联查询结果:
上SQL:
SELECT A.A_ID, A.A_B_ID, LISTAGG(B.B_NAME, ',') WITHIN
GROUP(
ORDER BY B.B_NAME) AS B_NAME
FROM A A
LEFT JOIN B B ON FIND_IN_SET(B.B_ID, A.A_B_ID) > 0
GROUP BY A.A_ID, A.A_B_ID
关联的关键函数代码: FIND_IN_SET(str1,str2) ——理解为str2是否包含str1,包含返回位置,1开始,不包含返回0
组合显示的关键函数代码 :
LISTAGG(B.B_NAME, ',') WITHIN
GROUP(ORDER BY B.B_NAME) ——将多行B.B_NAME 通过 , 字符组合在一列
3-23:纠正一下,FIND_IN_SET 函数是自定义函数,Oracle数据库并未内置此函数;具体定义可以参考博文什么的 https://blog.csdn.net/beu425210220/article/details/102563935