Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL CONCAT() สร้างชื่อคอลัมน์สำหรับใช้ใน Query


ใช้ตัวแปร User-defined Variable พร้อมคำสั่ง SET เพื่อสร้างชื่อคอลัมน์แบบไดนามิก

ขั้นตอน

  1. สร้าง Query String ด้วย CONCAT และ GROUP_CONCAT จาก INFORMATION_SCHEMA.COLUMNS
  2. เตรียมคำสั่งด้วย PREPARE
  3. รันด้วย EXECUTE
  4. ลบ Prepared Statement ด้วย DEALLOCATE PREPARE

รูปแบบไวยากรณ์

SET @q := (SELECT CONCAT('SELECT ', GROUP_CONCAT(CONCAT('\n 1 AS ', COLUMN_NAME) SEPARATOR ','), '\n FROM DUAL') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'yourTableName'); 
PREPARE stmt FROM @q; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt;

ตัวอย่างการใช้งาน

สร้างตาราง:

mysql> CREATE TABLE ConcatenationWithUserDefinedVariable ( Id INT NOT NULL AUTO_INCREMENT, User_Id INT, PRIMARY KEY(Id) );

สร้างและรัน Dynamic Query:

mysql> SET @q := (SELECT CONCAT('SELECT ', GROUP_CONCAT(CONCAT('\n 1 AS ', COLUMN_NAME) SEPARATOR ','), '\n FROM DUAL') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ConcatenationWithUserDefinedVariable'); 
mysql> PREPARE stmt FROM @q; 
mysql> EXECUTE stmt;

ผลลัพธ์:

+----+---------+ | Id | User_Id | +----+---------+ | 1  | 1       | +----+---------+

ลบ Prepared Statement:

mysql> DEALLOCATE PREPARE stmt;

เทคนิคนี้ใช้สร้างคำสั่ง SQL แบบไดนามิกจากข้อมูล Metadata ของตาราง