কম্পিউটার টিউটোরিয়াল

MySQL-এ CONCAT() ব্যবহার করে কোয়েরিতে ব্যবহার করার জন্য কলাম নাম তৈরি করা

কোয়েরিতে ব্যবহার করার জন্য কলাম নাম তৈরি করতে ইউজার-ডিফাইন্ড ভেরিয়েবল SET কমান্ডসহ ব্যবহার করতে হয়। সিনট্যাক্স নিচে দেওয়া হলো:

SET @anyVariableName := (     
    SELECT CONCAT      
    (      
        "SELECT",      
        GROUP_CONCAT(CONCAT("\n 1 as ", COLUMN_NAME) SEPARATOR ','),      
        "\n FROM DUAL")      
    FROM INFORMATION_SCHEMA_COLUMNS      
    WHERE TABLE_NAME= 'yourTableName' );

এখন PREPARE কমান্ড দিয়ে স্টেটমেন্ট প্রিপেয়ার করুন। সিনট্যাক্স নিচে দেওয়া হলো:

PREPARE anyVariableName from @anyVariableName;

EXECUTE কমান্ড দিয়ে স্টেটমেন্ট এক্সিকিউট করুন। সিনট্যাক্স নিচে দেওয়া হলো:

EXECUTE anyVariableName;

DEALLOCATE কমান্ড দিয়ে প্রিপেয়ারড স্টেটমেন্ট ডিঅ্যালোকেট করুন। সিনট্যাক্স নিচে দেওয়া হলো:

DEALLOCATE PREPARE anyVariableName; 

এখন দুটি কলামসহ একটি টেবিল তৈরি করা যাক এবং কলামগুলো কনক্যাট কোয়েরিতে ব্যবহার করা যাক। টেবিল তৈরির কোয়েরি:

mysql> create table ConcatenationWithUserDefinedVariable  
    -> (  
    -> Id int NOT NULL AUTO_INCREMENT,  
    -> User_Id int,  
    -> PRIMARY KEY(Id)  
    -> ); Query OK, 0 rows affected (1.14 sec)

কলাম নামগুলো কোয়েরিতে ব্যবহার করার জন্য উপরের সিনট্যাক্স ব্যবহার করা যাক। কোয়েরিটি হলো:

mysql> set @q := (     
    -> select concat(     
    -> "select",     
    -> group_concat(concat("\n 1 as ", column_name) separator ','),      
    -> "\nfrom dual")      
    -> from information_schema.columns      
    -> where table_name = 'ConcatenationWithUserDefinedVariable'); Query OK, 0 rows affected (0.01 sec)

উপরের ইউজার-ডিফাইন্ড ভেরিয়েবল প্রিপেয়ার করার কোয়েরি:

mysql> prepare stmt from @q; Query OK, 0 rows affected (0.00 sec) Statement prepared

এখন উপরের প্রিপেয়ারড স্টেটমেন্ট এক্সিকিউট করা যাক। কোয়েরিটি হলো:

mysql> execute stmt;

আউটপুট নিচে দেওয়া হলো:

+----+---------+ | Id | User_Id | +----+---------+ |  1 | 1 | +----+---------+ 1 row in set (0.00 sec)

শেষে প্রিপেয়ারড স্টেটমেন্ট ডিঅ্যালোকেট করা যাক। কোয়েরিটি হলো:

mysql> deallocate prepare stmt; Query OK, 0 rows affected (0.00 sec)

ব্যাখ্যা: এই টেকনিকটি ডাইনামিক SQL জেনারেট করতে ব্যবহৃত হয়। INFORMATION_SCHEMA.COLUMNS থেকে কলাম নামগুলো নিয়ে GROUP_CONCAT দিয়ে একটি সিলেক্ট কোয়েরি স্ট্রিং বানানো হয়েছে, যা পরে PREPARE/EXECUTE দিয়ে রান করা হয়েছে। এটি রানটাইমে কলাম ডাইনামিকলি সিলেক্ট করার জন্য কাজে লাগে।

  1. MySQL কোয়েরি কলাম মান রিপ্লেস করার জন্য

  2. MySQL কোয়েরি নাম দিয়ে গ্রুপ বাই করে কাউন্ট নতুন কলামে দেখানো

  3. MySQL-এ একক কোয়ারিতে সব কলামের জন্য এলিয়াস (Alias) সেট করা

  4. MySQL সিকোয়েন্স তৈরি (How to Create a MySQL Sequence)