Ich versuche, Werte zufällig aus einer Liste vordefinierter Werte in eine Tabelle zum Testen einzufügen. Ich habe versucht, die Lösung auf dieser Frage Stackoverflow gefunden werden:Wie kann ich Zufallswerte in eine SQL Server-Tabelle einfügen?
stackoverflow.com/.../update-sql-table-with-random-value-from-other-table
Als ich ich das versucht, alle meine „random“ Werte, die genau das gleiche für alle 3000 Datensätze eingefügt sind.
Wenn ich den Teil der Abfrage, die tatsächlich die zufällige Zeile auswählt, ausführen, wählt es jedes Mal einen zufälligen Datensatz aus, wenn ich es manuell ausführe, also weiß ich, dass die Abfrage funktioniert. Meine beste Vermutungen darüber, was geschieht, sind:
- SQL Server die
SELECT
irgendwie optimiert, ohne dass sich die Unterabfrage mehr ausgewertet werden als einmal - der Zufallswert Samen auf jeden Datensatz die gleiche ist die Abfrage-Updates
Ich bin fest, was meine Möglichkeiten sind. Mache ich etwas falsch, oder sollte ich das anders machen?
Dies ist der Code Ich verwende:
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())
Diese Frage/Antwort kann nützlich sein: http://stackoverflow.com/a/9039661/47226 –