我有一个带有两列的sql表,其中一个将执行一个父项,另一个将执行一个子项。
请找下表
Id name parent
1 Chandan null
2 raju 1
3 anand 1
4 gsfsgs null
8 gggg 2
9 ffff 2
这里我需要得到以下内容
Id name count
1 Chandan 2
2 raju 2
3 anand 0
4 gsfsgs 0
8 gggg 0
9 ffff 0
这是我正在尝试的事情
select id, name, (select count(*) from table where parentid=id) as count
但我没有得到正确的结果。
答案 0 :(得分:5)
自我加入
<meta name="viewport" content="width=device-width, initial-scale=1">
答案 1 :(得分:2)
子查询需要相关,即需要引用外部查询:
left join
但是,{{1}}可能会有更好的表现。
答案 2 :(得分:0)
以下是使用子查询和连接的变体:
SELECT T.id, T.name, IFNULL(sub.cnt,0)
FROM T
LEFT JOIN
(SELECT parent, COUNT(*) AS cnt
FROM T
GROUP BY parent) sub
ON T.id = sub.parent