sql >> Database teknologi >  >> RDS >> Mysql

Sådan tilføjer du automatisk stignings-id i henhold til en gruppe i mysql

Prøv dette:

update yourtable t1
join (
    select
          tt.indexer, @rowno := if(@grp = `group`, @rowno + 1, 1) as id, @grp := `group`
    from (select * from yourtable order by `group`, indexer) tt
    cross join (select @rowno := 0, @grp := null) t
) t2
on t1.indexer = t2.indexer
set t1.id = t2.id

Demo her

Redigeret:

Hvis du vil indsætte en ny række, skal du gøre det sådan her:

insert into yourtable
select '$indexer', '$group', '$name', coalesce(max(id), 0) + 1
from yourtable
where name = '$name'


  1. Sammenligning af datoværdier for CURDATE() med et fuldt tidsstempelfelt

  2. Hvor stor indflydelse kan et datatypevalg have?

  3. Hvordan kan jeg se alle de tilladte specialtegn i et varchar- eller char-felt i SQL Server?

  4. 2 måder at slette duplikerede rækker i SQLite