WÄHLEN Sie den Bereich von ganzen zahlen in MySQL. ZB. 1,2,3,4,...,n;
Brauche ich, um wählen Sie die Option Bereich von integer in MySQL. So etwas
SELECT RANGE(10,20) AS range;
gibt
10, 11, 12, 13, 14, ..., 20
Warum?
Ich möchte wählen Sie zufällige Telefonnummer aus dem Bereich noch nicht registriert. Dies ist Idee.
SELECT RANGE(100000,999999) AS range FROM phone WHERE phoneNum <> range LIMIT FLOOR(100000 + RAND()*(899999);
- Warum es nicht in dem Programm ist die Nutzung des SQL-Abfragen?
- Es kann doch nicht immer brauchen, um wieder eine Telefonnummer oder wollen Sie in der Lage sein zu wählen, 1000 neue phonenumbers auf einmal? Und haben Sie irgendwo eine Tabelle der "schon-gegeben-out" phonenumbers?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Probleme mit der Abfrage:
range
in der WHERE-Klausel. Es ist ein alias und wird erst definiert werden, nachdem die WHERE-Klausel durchgeführt werden.<>
. Im Allgemeinen könnten SieIN(...)
, aber Sie bestimmten Fall sollten SieBETWEEN 100000 and 999999
und vermeiden die Notwendigkeit für eineRANGE
Funktion.ORDER BY RAND()
.Versuchen Sie es mit dieser Abfrage:
Wenn Sie wollen finden, dass eine Zahl nicht in der Tabelle und die verfügbaren zahlen sind nicht in der Nähe von Erschöpfung (sagen wir weniger als 80% zugewiesen werden) ein guter Ansatz wäre, um Zufallszahlen zu generieren und überprüfen, ob Sie zugewiesen werden, bis Sie eine finden, die nicht.
Eine Reine MySQL-Lösung vorhanden ist, aber ich denke, es braucht etwas verdreht verbindet, zufällig und E-Modul.
SELECT number FROM RANGE(100000,999999) WHERE NOT EXISTS (SELECT phoneNum FROM phone WHERE phoneNum = number) ORDER BY RAND() LIMIT 1
- wennRANGE
erzeugt eine Tabelle von zahlen auf der flyAlternative:
Erstellen Sie zunächst eine Tabelle mit nur zahlen, die alle die zahlen von 1 bis MAX_NUM.
Dann benutzen Sie diese Anfrage:
Diese Weise können Sie auch mehrere relativ schnell durch ändern der Grenzwert.