В этом примере используется составной индекс, но нумерация начинается с 1
create table test (
id smallint not null,
norder int unsigned not null auto_increment,
primary key (id,norder)
) engine=myisam;
insert into test(id) values (1),(1),(1),(2),(3),(1),(1),(4),(5),(1)
Если вы хотите, чтобы он начинался с нуля, вам нужен триггер, как уже было сказано.