我需要获取子表中的记录数。
父表
+-------------+------------+
| Id | Name |
+-------------+------------+
| 1 | a |
+-------------+------------+
| 2 | b |
+-------------+------------+
| 3 | c |
+-------------+------------+
Run Code Online (Sandbox Code Playgroud)
子表:
+-------------+------------+
| Id | Code |
+-------------+------------+
| 1 | d1 |
+-------------+------------+
| 1 | d2 |
+-------------+------------+
| 1 | d3 |
+-------------+------------+
| 1 | d1 |
+-------------+------------+
| 2 | d2 |
+-------------+------------+
| 2 | d3 |
+-------------+------------+
| 3 | d1 |
+-------------+------------+
| 3 | d2 |
+-------+-----+------------+
Run Code Online (Sandbox Code Playgroud)
结果应该是:
+-------------+------------+------------+
| Id | Name | NumOfRec |
+-------------+------------+------------+
| 1 | a | 4 |
+-------------+------------+------------+
| 2 | b | 2 |
+-------------+------------+------------+
| 3 | c | 2 |
+-------------+------------+ -----------+
Run Code Online (Sandbox Code Playgroud)
我试过 COUNT 但后来我只得到了一个 ID 的记录数,而没有得到其他 ID 的记录数。
这应该这样做:
SELECT ID, COUNT(ID) AS RECCOUNT FROM CHILD_TABLE
GROUP BY ID;
Run Code Online (Sandbox Code Playgroud)
要根据 PARENT ID 获取记录,您可以这样做,
SELECT P.ID, P.NAME, COUNT(C.ID) FROM
PARENT P LEFT OUTER JOIN CHILD C
ON P.ID = C.ID
GROUP BY P.ID, P.NAME;
Run Code Online (Sandbox Code Playgroud)
SQL 小提琴在这里:http : //sqlfiddle.com/#!8/08d58 /3
对于没有相应子记录的父 ID,左外连接导致记录数为 0。