我有一个表(myTable)如下:
id | name | orig_id
----+-------+--------
01 | Bill | -
02 | Tom | 01
03 | Sam | 01
04 | Alex | 02
05 | Phil | -
06 | Bob | 01
Run Code Online (Sandbox Code Playgroud)
我想要一个返回每个记录的查询,但是添加了一个列,其中包含orig_id等于当前行id的其他行的计数.
结果表如下所示:
id | name | orig_id | mycount
----+-------+---------+--------
01 | Bill | - | 3
02 | Tom | 01 | 1
03 | Sam | 01 | 0
04 | Alex | 02 | 0
05 | Phil | - | 0
06 | Bob | 01 | 0
Run Code Online (Sandbox Code Playgroud)
我尝试了以下查询,但没有得到任何结果:
SELECT *, COUNT(t.name) AS mycount
FROM "myTable" AS t
WHERE t.id=t.orig_id
GROUP BY t.id;
Run Code Online (Sandbox Code Playgroud)
我怎样才能达到预期的效果?
您可以使用连接和聚合执行此操作:
SELECT t.*, tsum.mycount
FROM myTable t join
(select orig_id, count(name) as mycount
from myTable
group by orig_id
) tsum
on t.id = tsum.orig_id;
Run Code Online (Sandbox Code Playgroud)