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

สร้าง Temporary Table จาก SELECT ใน MySQL (CREATE TEMPORARY TABLE ... AS SELECT)

ใช้ 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 ง่าย