সেট ভেরিয়েবল এবং UPDATE ... ORDER BY ব্যবহার করুন
সর্ট করা সারিগুলোর একটি কালামকে ক্রমিকভাবে ইনক্রিমেন্ট করতে ইউজার-ডিফাইনড ভেরিয়েবল (@var) এবং UPDATE ... ORDER BY ব্যবহার করুন।
উদাহরণ: টেবিল ও ডেটা
mysql> CREATE TABLE DemoTable (FirstName VARCHAR(20), Position INT);
mysql> INSERT INTO DemoTable VALUES('Chris',100),('Robert',120),('David',130);
আপডেটের আগে:
+-----------+----------+ | FirstName | Position | +-----------+----------+ | Chris | 100 | | Robert | 120 | | David | 130 | +-----------+----------+
Position সর্ট করে ১০ করে ইনক্রিমেন্ট করুন
mysql> SET @myPosition := 100; Query OK, 0 rows affected (0.00 sec) mysql> UPDATE DemoTable SET Position = @myPosition := @myPosition + 10 ORDER BY Position; Query OK, 1 row affected (0.17 sec)
আপডেটের পর:
+-----------+----------+ | FirstName | Position | +-----------+----------+ | Chris | 110 | | Robert | 120 | | David | 130 | +-----------+----------+
ব্যাখ্যা: ভেরিয়েবল ১০০ থেকে শুরু। ORDER BY Position ASC সর্টে Chris (100) প্রথমে আপডেট হয়ে ১১০ হয়, ভেরিয়েবল ১১০ হয়। Robert (120) আপডেট হয়ে ১২০ (ভেরিয়েবল ১২০), David (130) আপডেট হয়ে ১৩০। নোট: শুধু ১ সারি চেঞ্জ দেখাচ্ছে কারণ Robert এবং David-এর মান ইতিমধ্যে সিকোয়েন্সে ছিল।