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

วิธีเลือก Empty Result Set ใน MySQL

การใช้ตาราง Dummy ชื่อ DUAL

ใน MySQL ตาราง DUAL เป็นตารางดัชนี (Dummy Table) ที่มีอยู่เสมอ ใช้สำหรับ SELECT ที่ไม่ต้องการ FROM ตารางจริง

คำสั่งสำหรับ Empty Result Set

SELECT 1 FROM DUAL WHERE FALSE;

ผลลัพธ์

Empty set (0.00 sec)

การทดสอบเปรียบเทียบ

เงื่อนไข TRUE (มีผลลัพธ์)

SELECT 1 FROM DUAL WHERE TRUE;
1
1

เงื่อนไข FALSE (Empty Result Set)

SELECT 1 FROM DUAL WHERE FALSE;
Empty set (0.00 sec)

กรณีใช้งานจริง

  • 🧪 Testing: ทดสอบ Query Structure, Function, Expression โดยไม่ต้องมีข้อมูล
  • 🔧 Stored Procedure: ใช้ใน Logic ควบคุม Flow (IF/ELSE) ที่ต้องการคืนค่า Empty Result Set
  • 📦 UNION: รวมกับ Query อื่นที่อาจคืนค่า Empty
  • ⚡ Performance: เร็วมาก ไม่ต้อง Scan ตารางจริง

ตัวอย่างใน Stored Procedure

CREATE PROCEDURE GetData(IN param INT)
BEGIN
    IF param > 0 THEN
        SELECT * FROM real_table WHERE id = param;
    ELSE
        SELECT 1 FROM DUAL WHERE FALSE;  -- Return empty result set
    END IF;
END;

คำสั่งที่เทียบเท่า

  • SELECT * FROM real_table WHERE 1=0 (ต้องมีตารางจริง)
  • SELECT 1 WHERE FALSE (MySQL รองรับ SELECT โดยไม่มี FROM)
  • SELECT * FROM (SELECT 1 AS x) AS t WHERE FALSE

ข้อดีของ DUAL

  • ✅ มาตรฐาน SQL (Oracle, MySQL, PostgreSQL, SQLite รองรับ)
  • ✅ ไม่ต้องมีสิทธิ์เข้าถึงตารางใดๆ
  • ✅ ทำงานได้แม้ Database จะว่างเปล่า