每次在另一行中读取相同值时,Mysql会在一行中递增值

时间:2013-09-12 15:07:11

标签: mysql sql select increment

假设我有一个名为customer_order的表:

id|    cust#|    counter 
 1    1        1
 2    2        1 
 3    1        2 
 4    3        1
 5    2        2
 6    1        3 

所以我的想法是,每次客户(cust#)重复时,你都希望增加计数器,如上所示。我需要在查询数据时在SELECT语句中执行此操作。我正在使用Pentaho水壶来查询数据库中的数据。我怎样才能做到这一点?

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用纯sql执行此操作:

update customer c
    set counter = (select count(*) from customer c2 where c2.cust# = c.cust# and c2.id <= c.id);

如果你有一个customer(cust#, id)索引,那么上面应该非常有效。

您也可以使用变量执行此操作,如果您有超过几万行,这可能更实用。

编辑:

深埋,我看到I want to do this in a select。哎呀。这是select版本:

select c.*,
       (select count(*) from customer c2 where c2.cust# = c.cust# and c2.id <= c.id) as counter
from customer c