sql >> Databasteknik >  >> RDS >> Mysql

Sortera tabell med loop i MySQL med SELECT och UPDATE

SELECT @p:=0, @parent:=0;
UPDATE page p1
JOIN
( SELECT title, 
  CASE WHEN @parent<>parent_id THEN @p:=0 ELSE @p:[email protected]+1 END as position,
  @parent:=parent_id as parent_id
  FROM page
  ORDER BY parent_id, title DESC ) p2
ON p1.title = p2.title AND p1.parent_id = p2.parent_id
SET p1.position = p2.position

Om dina (parent_id,title) par inte är unika, använd din primärnyckel som kopplingsvillkor - du måste lägga till den för att välja inom parentes.



  1. Skalär UDF Inlining i SQL Server 2019

  2. Flytta systemdatabaser i SQL Server-failover-klustret

  3. Hur förladdar man tabeller i INNODB buffertpool med MySQL?

  4. Hur beställer man en MySQL-fråga efter en specifik kolumn?