如果我有下表:
id | ref
1 b
4 c
2 a
3 b
1 b
3 b
如何计算id
有b
个唯一个实例作为参考?我现在的查询是:
select id, ref, count(ref) from table group by ref;
但是这显示了表中每个ref
存在的次数。我正在寻找的是:
id | ref | count
1 b 2 /*id 1, id 3*/
4 c 1 /*id 4 */
2 a 1 /*id 2 */
我实际上需要查看所有行 - 而不是group by
摘要,所以我需要它看起来像这样:
id | ref | count
1 b 2 /* id 1, id 3 */
4 c 1 /* id 4 */
2 a 1 /* id 2 */
3 b 2 /* id 1, id 3 */
1 b 2 /* id 1, id 3 */
3 b 2 /* id 1, id 3 */
答案 0 :(得分:1)
SELECT ref, COUNT(DISTINCT id) AS count
FROM table
GROUP BY ref
DISTINCT
表示不会计算重复的ID。
答案 1 :(得分:1)
select ref, count(distinct id) from table group by ref;
这将通过引用给你一个不同的id计数。
select ref, count(*) from table group by ref;
这将通过引用给你一些记录。
编辑:
尝试此操作以获得所需的输出。
select t.*, m.counter
from table t
join (
select ref, count(distinct id) as counter
from table group by ref
) m on t.ref = m.ref
关于SQLFiddle的示例:http://sqlfiddle.com/#!9/2b93c/2