คำอธิบาย
ใช้ DELIMITER เปลี่ยนตัวจบคำสั่งจาก ; เป็น // ชั่วคราว เพื่อรันหลาย SELECT ติดกันใน Client (เช่น mysql command line)
ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง
ตารางที่ 1: DemoTable1
mysql> create table DemoTable1 (
Title text ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.30 sec)
mysql> insert into DemoTable1 values('The database MySQL is less popular than MongoDB');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1 values('Java language uses MySQL database');
Query OK, 1 row affected (0.05 sec)
mysql> insert into DemoTable1 values('Node.js uses the MongoDB');
Query OK, 1 row affected (0.05 sec)
ตารางที่ 2: DemoTable2
mysql> create table DemoTable2 (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY );
Query OK, 0 rows affected (0.45 sec)
mysql> insert into DemoTable2 values(),(),(),(),(),(),(),(),(); Query OK, 9 rows affected (0.19 sec)
คำสั่งรันหลาย SELECT ด้วย DELIMITER
mysql> DELIMITER // mysql> select * from DemoTable1; select * from DemoTable2; //
ผลลัพธ์ (แสดงผลทั้ง 2 คิวรี่)
+-------------------------------------------------+ | Title | +-------------------------------------------------+ | The database MySQL is less popular than MongoDB | | Java language uses MySQL database | | Node.js uses the MongoDB | +-------------------------------------------------+ 3 rows in set (0.00 sec) +----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | +----+ 9 rows in set (0.03 sec)
คำอธิบาย
- DELIMITER //: เปลี่ยน Delimiter จาก ; เป็น //
- คำสั่ง SELECT ตัวแรกจบด้วย ; (ยังเป็น Delimiter เดิมใน Session นี้)
- คำสั่ง SELECT ตัวที่สองจบด้วย // (Delimiter ใหม่)
- // ท้ายสุด: ส่งสัญญาณให้ MySQL รันชุดคำสั่งทั้งหมด
ข้อควรระวัง
- ใช้ได้ใน MySQL Client (Command line, Workbench) เท่านั้น
- ใน Programming Language (PHP, Java, Python) ให้ใช้ Multi-query API หรือรันแยกคำสั่ง
- หลังเสร็จควร
DELIMITER ;คืนค่าเดิม
ทางเลือกอื่น
ใน Application ให้ใช้ Multiple Statements (mysqli::multi_query, PDO::exec) หรือรัน Query แยกกัน Loop