By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
create table tblreport (
ID int,
Name varchar(10),
ParentID int
);
Insert into tblreport(ID, Name, ParentID)Values(1, '1st', null)
,(2, '2nd', 1)
,(3, '3rd', 1)
,(4, '4th', 2)
,(5, '5th', 3);
SELECT *
FROM tblreport
WHERE FIND_IN_SET(ID,(SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (
SELECT @pv:=(SELECT GROUP_CONCAT(ID SEPARATOR ',')
FROM tblreport WHERE ParentID IN (@pv)) AS lv FROM tblreport
JOIN (SELECT @pv:=1)tmp
WHERE ParentID IN (@pv)) a));
ID | Name | ParentID |
---|---|---|
2 | 2nd | 1 |
3 | 3rd | 1 |
4 | 4th | 2 |