Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/12/2011, 06:46
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Conocer los ID de las filas borradas con un UPDATE con condición random

Suponiendo que el update que propones funciona seria una forma de hacerlo...

...where floor(rand()*100)<50...

como no sabemos que debe ser igual a floor(rand()*100)<50... o menor a 50 ni cuantos vas a modificar....ni como Sql va a modificar nada...y quien te dice que floor(rand()*100) no te va a dar dos veces, o mas, el mismo valor...

Si suponemos que quieres modificar n registros seleccionados aleatoriamente y luego listarlos...

Primero genera la lista aleatoria de identificadores.
(no es facil, puesto que aleatoriamente puedes elegir identificadores que no existan en la tabla)

Segundo usala para hacer el UPDATE

Tercero usala para listar los registgros modificados

A ver si te sirve esto

CREATE TABLE tutablatemporal (id);

INSERT INTO tutablatemporal (id) SELECT id FROM tuTabla ORDER BY RAND() LIMIT n;

(donde n es el numero de registros que quieres modificar)

UPDATE tabla set valor='---' where id IN (SELECT id FROM tutablatemporal);

SELECT * FROM tutabla where id IN (SELECT id FROM tutablatemporal);

DROP tutablatemporal;

Parece trabajo para el servidor pero solo trabaja sobre n registros....apoyandose ademas en el indice de la PK.

Con evitar UPDATE tabla set modificado=0 where modificado=1 ya te has ahorrado un monton de trabajo del servidor...imaginate que tabla tiene n*1.000.000 de registros....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 13/12/2011 a las 07:28