यूजर वेरिएबल से क्रमिक संख्या असाइन करना
यूजर-डिफाइंड वेरिएबल (@var) और ORDER BY का उपयोग करके पंक्तियों को क्रमिक संख्या (1, 2, 3...) से अपडेट करें।
सिंटैक्स
SET @yourVariableName = 0; UPDATE yourTableName SET yourColumnName = (@yourVariableName := @yourVariableName + 1) ORDER BY yourColumnName ASC;
उदाहरण: टेबल और डेटा
mysql> create table updateColumnDemo (
-> Id int,
-> OrderCountryName varchar(100),
-> OrderAmount int
-> );
Query OK, 0 rows affected (1.76 sec)
mysql> insert into updateColumnDemo(Id,OrderCountryName) values(10,'US'); mysql> insert into updateColumnDemo(Id,OrderCountryName) values(20,'UK'); mysql> insert into updateColumnDemo(Id,OrderCountryName) values(30,'AUS'); mysql> insert into updateColumnDemo(Id,OrderCountryName) values(40,'France');
अपडेट से पहले (OrderAmount NULL है)
+------+------------------+-------------+ | Id | OrderCountryName | OrderAmount | +------+------------------+-------------+ | 10 | US | NULL | | 20 | UK | NULL | | 30 | AUS | NULL | | 40 | France | NULL | +------+------------------+-------------+
क्रमिक अपडेट क्वेरी
mysql> SET @sequenceNumber = 0;
Query OK, 0 rows affected (0.00 sec)
mysql> UPDATE updateColumnDemo
-> SET OrderAmount = (@sequenceNumber := @sequenceNumber + 1)
-> ORDER BY OrderAmount ASC;
Query OK, 4 rows affected (0.25 sec)
अपडेट के बाद
+------+------------------+-------------+ | Id | OrderCountryName | OrderAmount | +------+------------------+-------------+ | 10 | US | 1 | | 20 | UK | 2 | | 30 | AUS | 3 | | 40 | France | 4 | +------+------------------+-------------+
महत्वपूर्ण नोट्स
ORDER BYक्रम निर्धारित करता है@var := @var + 1असाइनमेंट और इन्क्रीमेंट दोनों करता है- प्रारंभिक मान
SET @var = 0से सेट करें - MySQL 8.0+ में
ROW_NUMBER()विंडो फ़ंक्शन बेहतर विकल्प है