在mysql结果中获取基于id的数据计数

时间:2014-10-03 05:25:11

标签: mysql

我有一张如下表所示的表

id  |  id_fk  |  data  |
-------------------------
1   |    2    | data1  |
2   |    2    | data2  |
3   |    1    | data3  |
4   |    3    | data4  |
5   |    1    | data5  |
-------------------------

这里我的表id为'id',另一个表中的外键为id_fk

我试图实现的是,以递增模式获取每个外键的计数。也就是说,如果id_fk - >第一次出现2,然后计数应为1,下一次出现计数变为2,依此类推所有id_fk。我尝试了很多方法。但没有人给我实际的输出。

从上表中,结果表如下所示:

id_fk  |  count  | 
------------------
1      |    1    | 
1      |    2    | 
2      |    1    | 
2      |    2    | 
3      |    1    | 
------------------

请帮我解决这个问题..任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

试试这个

SELECT `id_fk`,
@a:=IF(id_fk=@b,@a+1,1) serial_number,
@b:=id_fk
FROM your_table,(SELECT @a:= 0,@b:=0) AS a 
ORDER BY `id_fk` ASC

答案 1 :(得分:1)

加入时效果很好。

select t1.id_fk,t1.id,count(*)
  from your_table t1
  left join your_table t2
    on t1.id_fk=t2.id_fk and t1.id>=t2.id
 group by  t1.id_fk,t1.id

参见 Sql Fiddle Demo