Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Mettre à jour le tableau avec des champs aléatoires

Vous devez forcer le moteur de base de données à évaluer une nouvelle valeur pour chaque ligne. Vous pouvez le faire en ajoutant une clause factice where sur la table externe comme :

DECLARE @city TABLE(ID INT IDENTITY(1, 1), City VARCHAR(100))

INSERT INTO @city VALUES
('Dallas'),
('New York'),
('Washington'),
('Las Vegas')


DECLARE @random TABLE(ID INT IDENTITY(1, 1), City VARCHAR(100))

INSERT INTO @random VALUES
('Manchester'),
('London'),
('Oxford'),
('Liverpool')


SELECT * FROM @city c
CROSS APPLY(SELECT TOP 1 * FROM @random r WHERE c.ID = c.ID ORDER BY NEWID()) ca

si vous supprimez WHERE c.ID = c.ID vous obtiendrez la même valeur pour toutes les lignes.