父ID字段存储如上图,采用逗号分割的方式
关联同一个表中的一个储存子ID的字段
表名:ITSM_PREMISES_SERVER_AUDIT
储存父ID的字段:ITSM_ACLASS_WORK_V
执行SQL:
select *,null as unnest from ITSM_PREMISES_SERVER_AUDIT where ITSM_ACLASS_WORK_V is null
union all
SELECT *, unnest(string_to_array(ITSM_ACLASS_WORK_V,',')) FROM ITSM_PREMISES_SERVER_AUDIT
string_to_array()函数,将指定的字段分割成数组
unnest()函数,将分割成数组的数据再分割成行,使得每个ITSM_ACLASS_WORK_V字段都显示一个数据,例如一条数据,储存的父id是逗号分割方式的2条,使用完这个函数之后就会查询出来两条数据,只有储存父id的字段不一样且之前父ID不在用逗号分割,只显示一条。
需要注意的是,unnest()函数只会识别ITSM_ACLASS_WORK_V字段有数据的,所有采用了个union all 进行关联,查询了全部的数据