ora mi dice che z.order è sconosciuta... non sarà magari "set z.rank = y.rank" ?

Query attuale :

codice:
update items as z inner join (
select x.id, x.trackid, x.pos as `order`
  from (select t.id, t.trackid, 
               case 
                 when @trackid = t.trackid then @rownum := @rownum + 1
                 else @rownum := 1
               end as pos,
               @ref := t.trackid
          from items t
          join (select @rownum := null, @trackid := -1) r
      order by t.id, t.trackid) x
) y
set z.order = y.order
where z.id = y.id