【问题标题】: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