MySQL-এ UPDATE স্টেটমেন্টে LIMIT ক্লজ ব্যবহার করে নির্দিষ্ট সংখ্যক রো আপডেট করা যায়। এটি বড় টেবিলে ব্যাচ আপডেট বা নির্দিষ্ট সংখ্যক রো পরিবর্তনের জন্য উপকারী।
টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(20)
-> );
Query OK, 0 rows affected (0.69 sec)
mysql> INSERT INTO DemoTable(Name) VALUES('Carol');
mysql> INSERT INTO DemoTable(Name) VALUES('Chris');
mysql> INSERT INTO DemoTable(Name) VALUES('David');
mysql> INSERT INTO DemoTable(Name) VALUES('Bob');
mysql> INSERT INTO DemoTable(Name) VALUES('Mike');
mysql> INSERT INTO DemoTable(Name) VALUES('Sam');
mysql> INSERT INTO DemoTable(Name) VALUES('Robert');
mysql> INSERT INTO DemoTable(Name) VALUES('Adam');
সব রেকর্ড দেখানো
mysql> SELECT * FROM DemoTable;
আউটপুট
+----+--------+ | Id | Name | +----+--------+ | 1 | Carol | | 2 | Chris | | 3 | David | | 4 | Bob | | 5 | Mike | | 6 | Sam | | 7 | Robert | | 8 | Adam | +----+--------+ 8 rows in set (0.00 sec)
প্রথম ৭টি রো 'John' দিয়ে আপডেট (LIMIT 7)
mysql> UPDATE DemoTable
-> SET Name = 'John'
-> LIMIT 7;
Query OK, 7 rows affected (0.20 sec)
Rows matched: 7 Changed: 7 Warnings: 0
আপডেটের পর রেকর্ডগুলো
mysql> SELECT * FROM DemoTable;
আউটপুট
+----+------+ | Id | Name | +----+------+ | 1 | John | | 2 | John | | 3 | John | | 4 | John | | 5 | John | | 6 | John | | 7 | John | | 8 | Adam | +----+------+ 8 rows in set (0.00 sec)
ব্যাখ্যা: LIMIT 7 আপডেট হওয়া রোর সংখ্যা ৭টি তে সীমাবদ্ধ করে। MySQL ডিফল্টভাবে টেবিলের প্রাকৃতিক ক্রমে (সাধারণত PK ক্রমে) প্রথম ৭টি রো আপডেট করে।
সতর্কতা: ORDER BY ছাড়া LIMIT ব্যবহার করলে কোনো রো আপডেট হবে তা নিশ্চিত নয় (স্টোরেজ ইঞ্জিন ও ইনডেক্সের ওপর নির্ভর করে)। নিশ্চিত করতে: UPDATE DemoTable SET Name = 'John' WHERE Id <= 7; বা ORDER BY Id LIMIT 7 (MySQL 8.0+ এ ORDER BY LIMIT সাপোর্ট করে)।