我有两张桌子
A和B
A B
----------------- -----------------
a_pk (int) b_pk (int)
a_name(varchar) a_pk (int)
b_name (varchar)
我可以写一个查询
SELECT a.a_name, b.b_name
FROM a LEFT OUTER JOIN b ON a.a_pk = b.a_pk
这将返回表a中所有内容的非独特列表,其表b加入数据。对于列a,将显示重复项,其中不同的b记录共享共同的a_pk列值。
但我想要做的是从表A列a_name获取一个完整的值列表,并添加一个列,该列是表B的连接值的COUNT。
因此,如果a_pk = 1且a_name = test,并且在表b中有5条记录的a_pk值为1,那么我的结果集将是
a_name b_count
------ -------
test 5
答案 0 :(得分:9)
查询应该是这样的:
SELECT
a.a_name,
(
SELECT Count(b.b_pk)
FROM b
Where b.a_pk = a.a_pk
) as b_count
FROM a
答案 1 :(得分:4)
SELECT a_name, COUNT(*) as 'b_count'
FROM
A a
JOIN B b
ON a.a_pk = b.a_pk
GROUP BY a_name
答案 2 :(得分:0)
SELECT
a.name,
(
SELECT COUNT(1)
FROM B b
WHERE b.a_pk = a.a_pk
)
FROM A a