Es sieht so aus, als ob RAND das ist, was ich brauche, aber ich habe ein bisschen Probleme damit zu verstehen, wie es funktioniert.
Ich muss eine Zufallszahl zwischen 60 und 120 in ein paar tausend Zeilen einfügen. Tabellenname ist: Listing und der Spaltenname lautet: hits
Könnten Sie bitte helfen?
Um eine zufällige ganze Zahl zwischen 60 und 120 zu erhalten, müssen Sie ein wenig arithmetisch mit den Ergebnissen von RAND()
arbeiten, was nur Gleitkommawerte erzeugt:
Also, was ist hier los?
RAND()
erzeugt einen Wert wie 0.847269199
. Wir multiplizieren das mit 61, was uns den Wert 51.83615194 gibt. Wir fügen 60 hinzu, da dies Ihr gewünschter Offset über Null ist (111.83615194). FLOOR()
rundet das Ganze auf die nächste ganze Zahl ab. Schließlich hast du 111.
Um dies über einige tausend vorhandene Zeilen zu tun:
%Vor% Weitere Informationen finden Sie in den MySQL-Dokumenten zu RAND()
.
Hinweis Ich denke, ich habe das Rechnen richtig, aber wenn Sie Werte von 59 oder 121 außerhalb des erwarteten Bereichs erhalten, ändern Sie +60
entsprechend nach oben oder unten.
um eine Zahl zwischen 60 und 120 (einschließlich 60 und 120) zu erhalten;
RAND()
erstellt eine Zahl im Intervall [0; 1) (also ohne 1). Also ergibt 61 * RAND () eine Zahl in [0, 61). 61 * RAND () + 60 ist in [60; 121) Durch Abrundung stellen Sie sicher, dass Ihre Nummer tatsächlich in [60; 120] ist.
Als ich mit dieser Art von Problem konfrontiert wurde, habe ich versucht, Handbuch, aber ich habe über 500 Zeilen,
Ich habe logischerweise einen Trick mitgebracht, der mir geholfen hat, denn wenn Sie RAND auf Abfrage ausführen,
Sie könnten einen Fehlerbericht aufgrund von Duplicates oder PRIMARY KEY erhalten, insbesondere wenn diese Spalte ein PRIMARY KEY
und AUTO INCREMENT
ist.
UPDATE-Verlauf SET-ID = FLOOR (217 + RAND () * 2161)
Dies hat automatisch eine Zufallszahl erzeugt, später löschte ich die umbenannte IDS colume
Kredit von Michael. Danke