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

votar
Archivado en Inclasificable con fecha 23/Abr/2008 - 0 comentarios
Ver en Bitacoras.com - Etiquetado con: , ,

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

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