Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Aktualizowanie kolumny tak, aby zawierała pozycję wiersza

To powinno działać

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;

Ale wolałbym najpierw zastosować to, aby usunąć ustawienie zmiennej zdefiniowanej przez użytkownika

set @row_number:=0;

Dodane przez Mchla:

Możesz to zrobić w jednym oświadczeniu takim jak to

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SELECT * FROM tbl WHERE clm LIKE CONCAT('%',<inne zapytanie sql LIMIT 1>,'%') - JAK?

  2. Mysql 1 losowy wiersz

  3. Łączenie się z bazą danych MySQL online za pomocą VB.Net

  4. Formatowanie DateTime w .Net dla bazy danych MySQL

  5. Prawidłowa obsługa długich danych w Hibernate