【问题标题】:count value for each unique id每个唯一 ID 的计数值
【发布时间】:2013-12-09 10:43:57
【问题描述】:

我有一张桌子

标识值 1个 2个 3 乙 4 乙 5 乙 6℃

我的 id 是主要的。 我总共有 2 a , 3 b 和 1 c 。所以我想计算与之匹配的每个主要 id 中的总重复值

我想要这种格式

id value_count 1 2 2 2 3 3 4 3 5 3 6 1

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: mysql sql select count group-by


【解决方案1】:

试试这个查询:

SELECT a.id, b.valueCnt 
FROM tableA a
INNER JOIN (SELECT a.value, COUNT(a.value) valueCnt
            FROM tableA a GROUP BY a.value) AS B ON a.value = b.value;

查看SQL FIDDLE DEMO

输出

| ID | VALUECNT |
|----|----------|
|  1 |        2 |
|  2 |        2 |
|  3 |        3 |
|  4 |        3 |
|  5 |        3 |
|  6 |        1 |

【讨论】:

    【解决方案2】:

    试试这个

    select id, value_count from tablename as a1 
    join (select count(*) as value_count, value from tablename group by value) as a2 
    on a1.value= a2.value 
    

    【讨论】:

      【解决方案3】:

      我建议你使用没有任何连接的子选择:

      SELECT  
      a.id,(SELECT COUNT(*) FROM tableA WHERE value = a.value) as valueCnt
      FROM tableA a
      

      Fiddle Demo

      【讨论】:

        【解决方案4】:

        你需要使用子查询。

        SELECT table.id , x.value_count
        FROM table
        INNER JOIN
        (SELECT t1.value, count(t1.id) as value_count
        FROM table t1
        Group by t1.value
        ) x on x.value = table.value
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-10-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多