1

我有一个包含 3 列sIDsUIDparentSUID的表,其中包含如下数据:

 *sID*  |  *sUID*  |   *parentSUID*
----------------------------------
  sID1  |   sUID1  |     null
  sID1  |   sUID2  |     null
  sID1  |   sUID3  |    psUID2
  sID1  |   sUID4  |    psUID2
  sID2  |   sUID5  |     null
  sID2  |   sUID6  |    psUID5

我想获取所有没有父母的 sUID 和每个孩子的数量,结果应该是这样的。

 *sID*  |  *sUID*  |    *count*
----------------------------------
  sID1  |   sUID1  |     0
  sID1  |   sUID2  |     2
  sID2  |   sUID5  |     1

我写了一个查询,但它给了我没有计数列的结果,我不知道如何管理它。

4

1 回答 1

3
SELECT p.sID, p.sUID, count(c.sUID)
FROM a189 p left outer join a189 c on 'p' + p.sUID =  c.ParentSUID
where p.ParentSUID is null
group by p.sID, p.sUID

除了使用 group by,子查询是另一种选择。

SELECT p.sID, p.sUID, (select count(1) FROM a189 c where 'p' + p.sUID = c.ParentSUID)
FROM a189 p
where p.ParentSUID is null

结果:

sID     sUID    Count
sID1    sUID1   0
sID1    sUID2   2
sID2    sUID5   1
于 2012-12-20T07:01:39.380 回答