假设我有下表:
ID | parentID | MoreStuff
1 | -1 | ...
2 | 1 | ...
3 | 1 | ...
4 | 2 | ...
5 | 1 | ...
Run Code Online (Sandbox Code Playgroud)
如何生成SQL SELECT语句以查明特定行是否包含子项?换句话说,我想知道ID 1是否有孩子,在这种情况下它有3个孩子.
我不确定如何创建SQL语句:
SELECT ID, hasChildren FROM myTable;
Run Code Online (Sandbox Code Playgroud)
在上面的SQL SELECT语句中,hasChildren会替换什么?
Ale*_*ini 17
没有组版本:
SELECT MyTable.Id, CASE WHEN EXISTS
(SELECT TOP 1 1 --you can actually select anything you want here
FROM MyTable MyTableCheck
WHERE MyTableCheck.ParentId = MyTable.Id
) THEN 1 ELSE 0 END AS HasRows
FROM MyTable
Run Code Online (Sandbox Code Playgroud)
And*_*mar 12
加入表格自己查找是否有孩子:
SELECT
parent.id as ID
, case when count(child.id) > 0 then 1 else 0 end as hasChildren
FROM myTable parent
LEFT JOIN myTable child
ON child.parentID = parent.ID
GROUP BY parent.id
Run Code Online (Sandbox Code Playgroud)