mysql计算一个字段链接到另一个字段的次数

时间:2015-10-21 21:29:28

标签: mysql

如果我有下表:

id  |  ref
1       b
4       c
2       a
3       b
1       b
3       b

如何计算idb唯一个实例作为参考?我现在的查询是:

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 */

2 个答案:

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