समाधान: RAND() और FLOOR() के साथ UPDATE
किसी कॉलम के मान में एक निर्दिष्ट सीमा के भीतर रैंडम संख्या जोड़ने के लिए RAND() और FLOOR() का संयोजन उपयोग करें।
सिंटैक्स
UPDATE yourTableName SET yourColumn = yourColumn + FLOOR(RAND() * (max - min + 1)) + min WHERE yourCondition;
व्यावहारिक उदाहरण
टेबल बनाना और डेटा डालना
mysql> CREATE TABLE RandomNumberDemo (MyNumber INT); mysql> INSERT INTO RandomNumberDemo VALUES (17), (18), (29);
रैंडम संख्या जोड़ना (30-300 के बीच, जहां MyNumber=18)
mysql> UPDATE RandomNumberDemo
-> SET MyNumber = MyNumber + FLOOR(RAND() * (270 + 1)) + 30
-> WHERE MyNumber = 18;
Query OK, 1 row affected (0.20 sec)
गणना व्याख्या
RAND(): 0 से 1 के बीच रैंडम दशमलव (0 ≤ r < 1)RAND() * 271: 0 से 270.999... के बीचFLOOR(...): 0 से 270 तक पूर्णांक+ 30: 30 से 300 तक शिफ्ट- परिणाम: 30-300 के बीच रैंडम पूर्णांक
परिणाम (उदाहरण)
| MyNumber (पहले) | जोड़ा गया रैंडम | MyNumber (बाद में) |
|---|---|---|
| 17 | - | 17 |
| 18 | 140 | 158 |
| 29 | - | 29 |
सामान्य फॉर्मूला
-- [min, max] समावेशी रेंज FLOOR(RAND() * (max - min + 1)) + min -- उदाहरण: FLOOR(RAND() * 100) + 1 -- 1 से 100 FLOOR(RAND() * 1000) + 100 -- 100 से 1099 FLOOR(RAND() * (500 - 100 + 1)) + 100 -- 100 से 500
सभी पंक्तियों के लिए अलग-अलग रैंडम मान
UPDATE RandomNumberDemo SET MyNumber = MyNumber + FLOOR(RAND() * 271) + 30;
प्रत्येक पंक्ति के लिए अलग रैंडम मान उत्पन्न होता है।
निर्धारित रैंडमनेस (परीक्षण के लिए)
UPDATE RandomNumberDemo SET MyNumber = MyNumber + FLOOR(0.5 * 271) + 30; -- हमेशा 165 जोड़ता है
चेतावनी
- RAND() प्रत्येक पंक्ति के लिए एक बार मूल्यांकन होता है
- WHERE क्लॉज में RAND() अप्रत्याशित परिणाम दे सकता है
- बड़े बैच अपडेट में प्रदर्शन प्रभाव
- क्रिप्टोग्राफिक उपयोग के लिए उपयुक्त नहीं