Me gustaría pasar por una tabla y borrar aleatoriamente algunos de los datos. Estoy haciendo algunos datos aleatorizados, convirtiendo los nombres reales en falsos, etc. Bueno, una de las tablas involucradas tiene una columna que es nula aproximadamente el 40% del tiempo. Mi nombre, la aplicación de aleatorizador, podría hacer una moneda en algún lugar cuando asigna nuevos nombres. Pero prefiero simplemente hacerlo al final: pode aleatoriamente algunos de los datos.¿cómo puedo actualizar las filas al azar?
tengo este código, que no funciona, pero seguro que se ve como que me debe a:
Use MyDb
go
CREATE VIEW vRandNumber
AS
SELECT RAND() as RandNumber
go
CREATE FUNCTION RandNumber()
RETURNS float
AS
BEGIN
RETURN (SELECT RandNumber FROM vRandNumber)
END
go
select dbo.RandNumber()
update names set nickname = null
where ((select dbo.RandNumber()) > 0.5)
Cuando ejecuto la función RandNumber está bien, un montón al azar. Pero cuando hago la actualización, actualizo todas las filas la mitad del tiempo y ninguna de las filas la otra mitad del tiempo.
Quiero que actualice un número aleatorio de filas cada vez que ejecuto el script. Realmente pensé que una función como RandNumber se ejecutaría una vez por cada fila en la tabla. Aparentemente no.
¿Esto es posible sin un bucle y sin una aplicación de consola?
Editar: También lo intenté con un par de variaciones de RAND() en donde directamente y obtuve los mismos resultados.
Puede usar simplemente: 'WHERE RAND()> 0.5'. No hay necesidad de la vista y la función. –
@OMG: Intenté eso, mismo resultado. – jcollum
10k vistas, 7 votos hacia arriba; smh – jcollum