2015-06-12 19 views
1

MySQL表中未分组计数器:MYSQL - 由<code>key asc</code>排序列值Occurence

id | key | value | OCCURENCE_COUNTER 
-------------------------------------------------------- 
1 a  ...   1 
2 a  ...   2 
3 a  ...   3 
4 b  ...   1 
5 b  ...   2 
6 b  ...   3 
7 c  ...   1 
8 c  ...   2 
9 c  ...   3 

OCCURENCE_COUNTER并不在表中。 我要让查询,这能告诉我的OCCURENCE_COUNTER值的每一行:

// pseudo-code: 
foreach(row) { 
    if(isFirstOccurenceOfKey(current_key)) { 
     current_OCCURENCE_COUNTER = 1; 
    } else { 
     current_OCCURENCE_COUNTER = previous_OCCURENCE_COUNTER + 1; 
    } 
} 

我通过key想不群OCCURENCE_CONTER。我只想得到未分组的柜台。

在这可能做一个单一的查询(或一些子查询)?

+0

[MySQL中的ROW \ _NUMBER()]的可能重复(http://stackoverflow.com/questions/1895110/row-number-in-mysql) – TobyLL

回答

0

我希望我能正确理解你的问题。 occurence_conter是您在问题中定义的表格。

select c.*, 
    (select count(*) 
     from occurence_conter c1 
     where c1.key = c.key 
      and c1.id <= c.id) as OccurenceCounter 
from occurence_conter c;