Estoy intentando insertar al azar valores de una lista de valores predefinidos en una tabla para probar. He intentado utilizar la solución encontrada sobre esta cuestión StackOverflow:¿Cómo puedo insertar valores aleatorios en una tabla de SQL Server?
stackoverflow.com/.../update-sql-table-with-random-value-from-other-table
Cuando yo he intentado esto, todos mis valores "al azar" que se insertan son exactamente los mismos para todos los registros de 3000.
Cuando ejecuto la parte de la consulta que realmente selecciona la fila aleatoria, selecciona un registro aleatorio cada vez que lo ejecuto a mano, por lo que sé que la consulta funciona. Mis mejores conjeturas en cuanto a lo que está ocurriendo son:
- SQL Server es la optimización de la
SELECT
alguna manera, no permitir que la subconsulta para ser evaluado más de una vez - semilla del valor aleatorio es el mismo en todos los registros de las actualizaciones de la consulta
Estoy atrapado en lo que son mis opciones. ¿Estoy haciendo algo mal, o hay otra forma en que debería estar haciendo esto?
Este es el código que estoy usando:
DECLARE @randomStuff TABLE ([id] INT, [val] VARCHAR(100))
INSERT INTO @randomStuff ([id], [val])
VALUES (1, 'Test Value 1')
INSERT INTO @randomStuff ([id], [val])
VALUES (2, 'Test Value 2')
INSERT INTO @randomStuff ([id], [val])
VALUES (3, 'Test Value 3')
INSERT INTO @randomStuff ([id], [val])
VALUES (4, 'Test Value 4')
INSERT INTO @randomStuff ([id], [val])
VALUES (5, 'Test Value 5')
INSERT INTO @randomStuff ([id], [val])
VALUES (6, null)
INSERT INTO @randomStuff ([id], [val])
VALUES (7, null)
INSERT INTO @randomStuff ([id], [val])
VALUES (8, null)
INSERT INTO @randomStuff ([id], [val])
VALUES (9, null)
INSERT INTO @randomStuff ([id], [val])
VALUES (10, null)
UPDATE MyTable
SET MyColumn = (SELECT TOP 1 [val] FROM @randomStuff ORDER BY NEWID())
Esta pregunta/respuesta puede ser útil: http://stackoverflow.com/a/9039661/47226 –