with tmp as ( select a.id,a.name,a.pid from tb a where id='003' union all select k.id,k.name,k.pid from tb k inner join tmp c on c.id = k.pid
)select * from tmp