রেঞ্জে র্যান্ডম নম্বরের জন্য MySQL-এ RAND() মেথড ব্যবহার করতে হয়। আপডেটের সিনট্যাক্স:
UPDATE yourTableName SET yourColumnName = value WHERE yourColumnName2 = (SELECT FLOOR(1 + RAND() * 3));
উপরের ক্যোয়ারিতে FLOOR(1 + RAND() * 3) স্টেটমেন্ট ১-৩ এর মধ্যে নম্বর জেনারেট করে এবং কলাম আপডেট করে।
সিনট্যাক্স বুঝতে একটি টেবিল তৈরি করি:
mysql> CREATE TABLE updateRowWith1To3 (
-> Id INT,
-> Name VARCHAR(100)
-> ); Query OK, 0 rows affected (0.47 sec)
ইনসার্ট কমান্ড দিয়ে কিছু রেকর্ড ইনসার্ট করি:
mysql> INSERT INTO updateRowWith1To3 VALUES(1,'John'); Query OK, 1 row affected (0.24 sec) mysql> INSERT INTO updateRowWith1To3 VALUES(2,'Sam'); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO updateRowWith1To3 VALUES(3,'Carol'); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO updateRowWith1To3 VALUES(4,'Mike'); Query OK, 1 row affected (0.16 sec) mysql> INSERT INTO updateRowWith1To3 VALUES(5,'Bob'); Query OK, 1 row affected (0.10 sec) mysql> INSERT INTO updateRowWith1To3 VALUES(6,'David'); Query OK, 1 row affected (0.17 sec)
সিলেক্ট স্টেটমেন্ট দিয়ে সব রেকর্ড দেখি:
mysql> SELECT * FROM updateRowWith1To3;
আউটপুট
+------+-------+ | Id | Name | +------+-------+ | 1 | John | | 2 | Sam | | 3 | Carol | | 4 | Mike | | 5 | Bob | | 6 | David | +------+-------+ 6 rows in set (0.00 sec)
১-৩ পর্যন্ত র্যান্ডম নম্বর দিয়ে কলাম নাম আপডেট করার ক্যোয়ারি:
mysql> UPDATE updateRowWith1To3 SET Name = 'Mary' WHERE Id = (SELECT FLOOR(1 + RAND() * 3)); Query OK, 1 row affected (0.15 sec) Rows matched: 1 Changed: 1 Warnings: 0
টেবিল চেক করি। কলাম নাম ১-৩ এর মধ্যে র্যান্ডমলি Mary-এ আপডেট হয়েছে:
mysql> SELECT * FROM updateRowWith1To3;
আউটপুট
+------+-------+ | Id | Name | +------+-------+ | 1 | Mary | | 2 | Sam | | 3 | Carol | | 4 | Mike | | 5 | Bob | | 6 | David | +------+-------+ 6 rows in set (0.00 sec)