我有一张如下表所示的表
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 |
------------------
请帮我解决这个问题..任何帮助将不胜感激。
答案 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