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

MySQL: รันหลายคำสั่ง SELECT พร้อมกันด้วย DELIMITER


คำอธิบาย

ใช้ 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