sql >> Databasteknik >  >> RDS >> Mysql

Uppdaterar kolumnen så att den innehåller radpositionen

Detta borde fungera

update 
content,
(
  select 
  @row_number:=ifnull(@row_number, 0)+1 as new_position,
  ContentID 
  from content
  where CategoryID=1
  order by position
) as table_position
set position=table_position.new_position
where table_position.ContentID=content.ContentID;

Men jag skulle föredra att tillämpa detta först, för att avaktivera användardefinierad variabel

set @row_number:=0;

Tillagt av Mchl:

Du kan göra det i ett uttalande som detta

update 
content,
(
  select 
  @row_number:=ifnull(@row_number, 0)+1 as new_position,
  ContentID 
  from content
  where CategoryID=1
  order by position
) as table_position,
(
  select @row_number:=0
) as rowNumberInit
set position=table_position.new_position
where table_position.ContentID=content.ContentID;


  1. PHP MySQL paginering med slumpmässig ordning

  2. Regex för att matcha MySQL-kommentarer

  3. Postgres - FATAL:databasfiler är inkompatibla med servern

  4. Prestandaöverväganden för temporär data i Oracle