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

SELECT gamma di numeri interi in MySQL. Per esempio. 1,2,3,4,...,n;

Problemi con la tua richiesta:

  1. Non puoi utilizzare range nella clausola WHERE. È un alias e verrà definito solo dopo l'esecuzione della clausola WHERE.
  2. Anche se potessi usarlo, non ha senso confrontare un numero con un insieme di numeri usando <> . In generale potresti usare IN(...) , ma nel tuo caso particolare dovresti usare BETWEEN 100000 and 999999 ed evita la necessità di un RANGE funzione.
  3. Se vuoi solo un numero, il limite dovrebbe essere 1, non qualcosa di casuale. Di solito per selezionare oggetti casuali usi ORDER BY RAND() .

Prova a utilizzare questa query:

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

Se vuoi trovare un numero non nella tua tabella e i numeri disponibili non sono prossimi all'esaurimento (diciamo che è stato assegnato meno dell'80%) un buon approccio sarebbe generare numeri casuali e controllare se sono assegnati finché non ne trovi uno che è non.

Può esistere una soluzione MySQL pura, ma penso che necessiti di unioni contorte, casuali e moduli.