【问题标题】:Combining sql select and Count结合sql select和Count
【发布时间】:2012-09-12 18:25:30
【问题描述】:

我有两张桌子

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

【问题讨论】:

    标签: sql count


    【解决方案1】:

    查询应该是这样的:

    SELECT 
        a.a_name, 
        (
            SELECT Count(b.b_pk) 
            FROM b 
            Where b.a_pk = a.a_pk
        ) as b_count 
    FROM  a
    

    【讨论】:

      【解决方案2】:
      SELECT a_name, COUNT(*) as 'b_count'
      FROM 
          A a
          JOIN B b
          ON a.a_pk = b.a_pk
      GROUP BY a_name
      

      【讨论】:

        【解决方案3】:
        SELECT
            a.name,
            (
                SELECT COUNT(1)
                FROM B b
                WHERE b.a_pk = a.a_pk
            )
        FROM A a
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-11-17
          • 1970-01-01
          • 2019-03-09
          • 1970-01-01
          • 2013-05-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多