Sto provando a inserire in modo casuale i valori da un elenco di valori predefiniti in una tabella per il test. Ho provato ad utilizzare la soluzione trovata su questa questione StackOverflow:Come posso inserire valori casuali in una tabella di SQL Server?
stackoverflow.com/.../update-sql-table-with-random-value-from-other-table
Quando ho ho provato questo, tutti i miei valori "casuali" che vengono inseriti sono esattamente gli stessi per tutti i 3000 record.
Quando eseguo la parte della query che seleziona effettivamente la riga casuale, esso seleziona un record casuale ogni volta che lo eseguo a mano, quindi so che la query funziona. Le mie migliori congetture su ciò che sta accadendo sono:
- SQL Server sta ottimizzando il
SELECT
in qualche modo, non permettendo la sottoquery da valutare più di una volta - seme del valore casuale è la stessa su tutti i record degli aggiornamenti di query
Sono bloccato su quali sono le mie opzioni. Sto facendo qualcosa di sbagliato, o c'è un altro modo in cui dovrei fare questo?
Questo è il codice che sto utilizzando:
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())
Questa domanda/risposta può essere utile: http://stackoverflow.com/a/9039661/47226 –