Un éditeur utile a ajouté le "Select" avant chaque instruction, mais le point de cet élément est qu'il peut générer des clés uniques pour chaque ligne dans un retour, pas seulement un élément (pour cela, j'utiliserais la fonction Rand()). Par exemple :Sélectionnez les 100 premiers Rand(),* de tblExample
Renverrait la même valeur aléatoire pour les 100 lignes.
Tandis que :Sélectionnez les 100 premiers ABS(CHECKSUM(NEWID()) % 10),* à partir de l'exemple de table
Renverrait une valeur aléatoire différente entre 0 et 9 sur chaque ligne du retour. Ainsi, bien que la sélection facilite le copier-coller, vous pouvez copier la logique dans une instruction de sélection si c'est ce qui est nécessaire.
Cela génère un nombre aléatoire entre 0 et 9
SELECT ABS(CHECKSUM(NEWID()) % 10)
1 à 6
SELECT ABS(CHECKSUM(NEWID()) % 6) + 1
3 à 6
SELECT ABS(CHECKSUM(NEWID()) % 4) + 3
Dynamique (basé sur le commentaire d'Eilert Hjelmeseths, mis à jour pour corriger un bogue (+ à -))
SELECT ABS(CHECKSUM(NEWID()) % (@max - @min - 1)) + @min
Mis à jour en fonction des commentaires :
NEWID
génère une chaîne aléatoire (pour chaque ligne en retour)CHECKSUM
prend la valeur de la chaîne et crée un nombre- module (
%
) divise par ce nombre et renvoie le reste (ce qui signifie que la valeur maximale est un de moins que le nombre que vous utilisez) ABS
change les résultats négatifs en positifs- ajoutez ensuite un au résultat pour éliminer 0 résultat (pour simuler un jet de dé)