Delirios de un Informático

Delirando sobre informática, fotografía, programación, móviles y mucho más desde 2003

UPDATE con rownum y ORDER BY en MySQL

Archivado en Inclasificable con fecha 23/Apr/2008 - 0 comentarios
Etiquetado con: mysql, database, sql

Mi compañero Luis nos indicaba en Sentido Web cómo simular el rownum de Oracle en MySQL:

SELECT tabla.*, @rownum:=@rownum+1 AS 'rownum' 
FROM tabla, (SELECT @rownum:=0) r

El problema aparece cuando se quiere hacer un UPDATE asignando el valor de rownum a un campo cuando se necesita un ORDER BY, ya que MySQL no permite usar orden en las consultas de actualización cuando se usan 2 tablas.

La solución pasa por definir previamente una variable que se vaya actualizando para cada fila para la que se realize el UPDATE:

SET @rownum=0; 
UPDATE tabla SET campo1=@rownum:=@rownum+1 ORDER BY campo2

Antes de comentar...

Puedes escribir lo que quieras, pero por favor hazlo respetando a los demás y en relación al tema que se está tratando. Todo comentario insultante o fuera de lugar será eliminado

Está permitido utilizar las siguientes etiquetas HTML para formatear tu comentario: <a> <b> <blockquote> <i> <u>. Además también puedes utilizar estos emoticonos:

:) :( :'( :P ;) :D XD :O :S 8) :$ (A) (L) (K) |) (6) :@ +o( :|

Puedes enviar referencias a esta anotación utilizando esta dirección

Haz tu comentario

Nombre Correo electrónico Página web
Acuérdate de mi, por favor

Delirios de un Informático :: Gestionado con Bitacorae :: Alojado en Bitacoras.com :: Licenciado bajo Creative Commons