结合sql select和Count

时间:2012-09-12 18:25:30

标签: sql count

我有两张桌子

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

3 个答案:

答案 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