Requête MySQL pour attribuer un nombre aléatoire unique à chaque ligne
Question
Je souhaite attacher à ma table une colonne qui sera un nombre aléatoire d'une liste séquentielle = au nombre de lignes.
Ainsi, si ma table comportait 999 lignes , les numéros 1 à 999 seraient attribués de manière aléatoire et unique .
Maintenant, j’ai pensé que je pouvais ajouter une valeur factice TempRandomColumn = Rand (), trier par là et ajouter les nombres de manière séquentielle à l’aide de PHP. Mais cela signifie 999 déclarations MySQL.
Y a-t-il un moyen de faire cela en utilisant une seule instruction MySQL?
Merci pour tous les pointeurs.
La solution
SET @r := 0;
UPDATE items2
SET author_id = (@r := @r + 1)
ORDER BY
RAND()
Autres conseils
SET @i=1;
SELECT t.*, @i:=@i+1 as RAND_NUM FROM your_table t ORDER BY RAND();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow