Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SELECT intervalo de inteiros no MySQL. Por exemplo. 1,2,3,4,...,n;


Problemas com sua consulta:
  1. Você não pode usar range na cláusula WHERE. É um alias e só será definido após a execução da cláusula WHERE.
  2. Mesmo se você pudesse usá-lo, não faz sentido comparar um número com um conjunto de números usando <> . Em geral, você pode usar IN(...) , mas em seu caso particular você deve usar BETWEEN 100000 and 999999 e evite a necessidade de um RANGE função.
  3. Se você quiser apenas um número, o limite deve ser 1, não algo aleatório. Normalmente para selecionar itens aleatórios você usa ORDER BY RAND() .

Tente usar esta consulta:
SELECT phoneNum, 100000 as rangeStart, 999999 AS rangeEnd
FROM phone
WHERE phoneNum NOT BETWEEN 100000 AND 999999
ORDER BY RAND()
LIMIT 1

Se você deseja encontrar um número que não está em sua tabela e os números disponíveis não estão próximos do esgotamento (digamos, menos de 80% são atribuídos), uma boa abordagem seria gerar números aleatórios e verificar se eles são atribuídos até encontrar um que seja não.

Uma solução MySQL pura pode existir, mas acho que precisa de algumas junções torcidas, aleatórias e de módulo.