我正在寻找一种解决方案,通过该解决方案,我可以获取父记录的所有子记录。的 I found a solution that meet my needs as shown here
唯一的问题是上述解决方案是连接ID。
当前结果集
ID列以逗号分隔,值为= 2,3,4
预期输出
ID Name ParentID
1 1st null
2 2nd 1
3 3rd 1
4 4th 2
我尝试了以下代码。
SELECT @pv:=
(SELECT * FROM tblreport WHERE ParentID IN (@pv)) AS lv FROM tblreport
JOIN
(SELECT @pv:=2)tmp
WHERE ParentID IN (@pv)
并收到错误消息:操作数应包含1列
答案 0 :(得分:4)
现在,它们以逗号分隔。但是,我希望返回特定行的所有列。
您可以使用"(&(objectCategory=Person)(sAMAccountName=*)(memberOf=cn=entergroup,ou=users,dc=company,dc=com))"
ID结果,如:
CSV
<强> DBFiddle Demo 强>
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
:
UNION ALL
<强> DBFiddle Demo2 强>
答案 1 :(得分:-1)
这个简短的查询只提供了这个输出:
SELECT * from tblreport WHERE FIND_IN_SET(id, '2,3,4');
更好......
使用MySQL 8.0或MariaDB 10.2 - 每个都有递归的CTE查询,可以方便地深入分析数据库树。
(不要使用CSV,只能使用单独的行。)