MYSQL - 列值Occurence的未组合计数器

时间:2015-06-12 10:03:23

标签: mysql

key asc排序的Mysql表:

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;
    }
}

我不希望OCCURENCE_CONTER分组key。我只是想要解开反击。

这可以在一个查询中(或使用一些子查询)吗?

1 个答案:

答案 0 :(得分: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;