ในภาษา SQL เมื่อเขียนคำสั่ง SELECT * FROM (SELECT * FROM employees) AS temp_table ผลลัพธ์ที่ได้คืออะไร

แสดงข้อมูลทุกแถวและทุกคอลัมน์จากตาราง employees เหมือนกับการ SELECT * FROM employees โดยตรง
เกิดข้อผิดพลาดเนื่องจาก SQL ไม่อนุญาตให้ใช้ Subquery ใน FROM clause โดยไม่มีเงื่อนไข WHERE
แสดงเฉพาะแถวแรกของตาราง employees เนื่องจาก Derived Table จะจำกัดผลลัพธ์โดยอัตโนมัติ
แสดงข้อมูลเฉพาะคอลัมน์ที่เป็น Primary Key ของตาราง employees เนื่องจากการซ้อน SELECT จะกรองคอลัมน์อื่นออก

เฉลยอธิบาย

คำสั่งนี้ใช้ Derived Table (ตารางชั่วคราวที่สร้างจาก Subquery ใน FROM clause) โดย Subquery ชั้นในคือ SELECT * FROM employees จะดึงข้อมูลทุกแถวทุกคอลัมน์จากตาราง employees จากนั้น SELECT ชั้นนอกจะดึงข้อมูลทั้งหมดจาก Derived Table ที่ชื่อ temp_table ซึ่งมีข้อมูลเดียวกัน ผลลัพธ์สุดท้ายจึงเหมือนกับการรัน SELECT * FROM employees โดยตรงทุกประการ alias temp_table ทำให้ชั้นนอกอ้าง derived table ได้ ทั้งนี้ข้อกำหนด alias และคำว่า AS แตกต่างเล็กน้อยตาม DBMS

ข้อสอบอื่นในวิชาการใช้ภาษา SQL

ดูข้อสอบวิชานี้ทั้งหมด →