MySQL consulta para atribuir um número aleatório exclusivo para cada linha

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Gostaria de anexar uma coluna para minha mesa que será um número aleatório de uma lista sequencial = ao número de linhas.

Assim, se a minha mesa tinha 999 linhas , em seguida, os números 1 a 999 seriam distribuídos aleatoriamente e exclusivamente .

Agora, eu percebi que eu poderia adicionar um manequim TempRandomColumn = Rand (), ordenar por isso e adicionar os números sequencialmente usando PHP. Mas isso significa que 999 declarações MySQL.

Existe uma maneira de fazer isso usando uma única instrução MySQL?

Obrigado por qualquer ponteiros.

Foi útil?

Solução

SET @r := 0;
UPDATE  items2
SET     author_id = (@r := @r + 1)
ORDER BY
        RAND()

Outras dicas

SET @i=1;
SELECT t.*, @i:=@i+1 as RAND_NUM FROM your_table t ORDER BY RAND();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top