ใช้ CREATE TEMPORARY TABLE ... AS SELECT สร้าง Temp Table จาก Query Result ทันที ไม่ต้อง CREATE TABLE แยก
สร้างตารางต้นทาง
mysql> CREATE TABLE MyTableDemo (id INT, Name VARCHAR(100)); mysql> INSERT INTO MyTableDemo VALUES (1,'John'), (2,'Carol'), (3,'Bob');
สร้าง Temporary Table
mysql> CREATE TEMPORARY TABLE IF NOT EXISTS MyTemporaryTableDemo
-> AS (SELECT * FROM MyTableDemo);
Query OK, 3 rows affected (0.01 sec)
ตรวจสอบข้อมูล
mysql> SELECT * FROM MyTemporaryTableDemo;
+------+-------+ | id | Name | +------+-------+ | 1 | John | | 2 | Carol | | 3 | Bob | +------+-------+
คุณสมบัติ Temporary Table
- มองเห็นได้เฉพาะ Session เดียวกัน (Connection อื่นไม่เห็น)
- หายอัตโนมัติเมื่อ Connection ปิด (หรือ
DROP TEMPORARY TABLE) - Session ต่างกัน สร้าง Temp Table ชื่อเดียวกันได้ (Isolated)
- ไม่ปรากฏใน
SHOW TABLES
ใช้กับ Query ที่ซับซ้อน
CREATE TEMPORARY TABLE temp_sales AS SELECT customer_id, SUM(amount) AS total FROM orders WHERE order_date >= '2024-01-01' GROUP BY customer_id HAVING total > 10000; -- ใช้ temp_sales JOIN ตารางอื่นต่อ... SELECT c.name, t.total FROM customers c JOIN temp_sales t ON c.id = t.customer_id;
ข้อดี: แบ่ง Query ยาวเป็น Steps, ใช้ Index ได้, หลีกเลี่ยง Subquery ซ้อน, ทำ Debug ง่าย