রিকারসিভ SELECT-এর জন্য উদাহরণ দেখি। প্রথমে একটি টেবিল তৈরি করব। CREATE কমান্ড ব্যবহার করে টেবিল তৈরি করা হয়।
mysql> CREATE table tblSelectDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.61 sec)
"tblSelectDemo" টেবিলে রেকর্ড ইনসার্ট করুন:
mysql> insert into tblSelectDemo values(1,'John'); Query OK, 1 row affected (0.10 sec) mysql> insert into tblSelectDemo values(2,'Carol'); Query OK, 1 row affected (0.09 sec) mysql> insert into tblSelectDemo values(3,'Smith'); Query OK, 1 row affected (0.17 sec) mysql> insert into tblSelectDemo values(4,'David'); Query OK, 1 row affected (0.15 sec) mysql> insert into tblSelectDemo values(5,'Bob'); Query OK, 1 row affected (0.18 sec)
সকল রেকর্ড দেখুন:
mysql> SELECT *from tblSelectDemo;
আউটপুট:
+------+-------+ | id | name | +------+-------+ | 1 | John | | 2 | Carol | | 3 | Smith | | 4 | David | | 5 | Bob | +------+-------+ 5 rows in set (0.00 sec)
রিকারসিভ SELECT সিনট্যাক্স (সেশন ভেরিয়েবল ব্যবহার করে)
mysql> SELECT var1.id as id, @sessionName:= var1.Name as NameofStudent -> FROM (SELECT * FROM tblSelectDemo ORDER BY id DESC) var1 -> JOIN (SELECT @sessionName:= 4) tmp -> WHERE var1.id = @sessionName;
আউটপুট:
+------+----------------+ | id | NameofStudent | +------+----------------+ | 4 | David | +------+----------------+ 1 row in set (0.00 sec)
আধুনিক পদ্ধতি (MySQL 8.0+): WITH RECURSIVE cte AS (SELECT ... UNION ALL SELECT ... FROM cte JOIN ...) SELECT * FROM cte; ব্যবহার করে আসল রিকারসিভ CTE (Common Table Expression) লিখা যায়। Hierarchical ডেটা (যেমন: সাংগঠনিক চার্ট, বিল অফ মেটেরিয়ালস) কোয়েরি করার জন্য এটি মানক পদ্ধতি।