sql >> Database >  >> RDS >> Mysql

Kolom bijwerken zodat deze de rijpositie bevat

Dit zou moeten werken

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;

Maar ik zou dit liever eerst toepassen om de door de gebruiker gedefinieerde variabele uit te schakelen

set @row_number:=0;

Toegevoegd door Mchl:

U kunt dat doen in één verklaring als deze

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. Rijen retourneren die niet-alfanumerieke tekens bevatten in SQL Server

  2. Databasemodellering

  3. Meerdere COUNT() voor meerdere voorwaarden in één query (MySQL)

  4. Ontwikkelaarstools om rechtstreeks toegang te krijgen tot databases