sql >> Database teknologi >  >> RDS >> Mysql

VÆLG række af heltal i MySQL. For eksempel. 1,2,3,4,...,n;

Problemer med din forespørgsel:

  1. Du kan ikke bruge range i WHERE-klausulen. Det er et alias og vil kun blive defineret, efter at WHERE-sætningen er udført.
  2. Selv om du kunne bruge det, giver det ingen mening at sammenligne et tal med et sæt tal ved hjælp af <> . Generelt kan du bruge IN(...) , men i dit særlige tilfælde skal du bruge BETWEEN 100000 and 999999 og undgå behovet for en RANGE fungere.
  3. Hvis du kun vil have ét tal, skal grænsen være 1, ikke noget tilfældigt. Normalt for at vælge tilfældige elementer bruger du ORDER BY RAND() .

Prøv at bruge denne forespørgsel:

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

Hvis du vil finde et tal, der ikke er i din tabel, og de tilgængelige tal ikke er tæt på udtømning (f.eks. er mindre end 80 % tildelt), ville en god fremgangsmåde være at generere tilfældige tal og kontrollere, om de er tildelt, indtil du finder et, der ikke er 't.

Der findes muligvis en ren MySQL-løsning, men jeg tror, ​​den har brug for nogle snoede joinforbindelser, tilfældige og modulus.



  1. Del strengen i rækken

  2. MySQL:Gruppér efter og tæl flere felter

  3. PostgreSQL:Auto-increment baseret på multi-kolonne unik begrænsning

  4. Sådan får du svarende til ResultSetMetaData uden ResultSet