Requête MySQL pour attribuer un nombre aléatoire unique à chaque ligne

StackOverflow https://stackoverflow.com/questions/602952

  •  03-07-2019
  •  | 
  •  

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.

Était-ce utile?

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
scroll top