select [id],[name],(select count(id) from [F_Categories] where parent=a.id) as childs from [F_Categories] a where parent=@parent order by pai asc

解决方案 »

  1.   

    以空间换时间。增加一个soncount 字段存储子项个数要得不?
      

  2.   

    这样写已经很好了 也可以 join / group by#1的方案要维护子项个数
      

  3.   

    试一下:
    declare @parent varchar(100)
    set @parent = 'test'
    ;WITH cte_test AS
    (
    SELECT id, childs = COUNT(id) FROM [F_Categories] WHERE  parent = @parent group by id 
    )
    SELECT A.[id], A.[name], B.childs 
    FROM [F_Categories] A, cte_test B 
    WHERE  parent = @parent AND A.[id] = B.id
    ORDER BY A.pai