我正在项目中实现回收站功能。如果整个文件夹被删除,我只希望看到文件夹名称,而不能看到其所有子文件夹(内容)。这是它的外观:
+----+----------+---------------+
| ID | ParentID | Name |
+----+----------+---------------+
| 3 | 1 | Css |
+----+----------+---------------+
| 4 | 8 | New File.txt |
+----+----------+---------------+
| 6 | 10 | Scripts.js |
+----+----------+---------------+
| 7 | 3 | Styles.css |
+----+----------+---------------+
| 8 | 3 | Bootstrap.css |
+----+----------+---------------+
我唯一想要的输出是第3行和第6行。
如您所见,“父子”关系中没有逻辑模式,因此,我很难弄清楚如何不显示子行。
另一种选择是标记行,然后稍后我可以对输出进行排序。例如,像这样:
+----+----------+---------------+--------+
| ID | ParentID | Name | Label |
+----+----------+---------------+--------+
| 3 | 1 | Css | parent |
+----+----------+---------------+--------+
| 4 | 8 | New File.txt | child |
+----+----------+---------------+--------+
| 6 | 10 | Scripts.js | parent |
+----+----------+---------------+--------+
| 7 | 3 | Styles.css | child |
+----+----------+---------------+--------+
| 8 | 3 | Bootstrap.css | child |
+----+----------+---------------+--------+
答案 0 :(得分:5)
您要做的是在回收站中选择没有父项的任何内容。
Select child.ID,child.ParentID,child.Name from [table] child
left join [table] parent
on child.parentID = parent.ID
where parent.ID is null
这将得到父母不在表中的任何东西