ข้ามไปเนื้อหาหลัก

SQL Is Surviving: เมื่อ Query เดียวอาจไม่พอสำหรับแฟรงก์ลิน

เรียนรู้การใช้งาน Subquery และ CTE ใน SQL ผ่านตัวละครแฟรงก์ลิน ตั้งแต่การคำนวณค่าเฉลี่ย ค้นหาคะแนนสูงสุด ไปจนถึงการจัดการข้อมูลหลายค่าด้วย IN

เรียบเรียงโดย AI
Inewgen
14 Sep 2026ที่มา: Dev.to2 นาทีอ่าน (0 ครั้ง)
แชร์
SQL Is Surviving: เมื่อ Query เดียวอาจไม่พอสำหรับแฟรงก์ลิน

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • เรียนรู้การใช้ Subquery เพื่อคำนวณค่าล่วงหน้าก่อนนำมาประมวลผลต่อ
  • เข้าใจความแตกต่างระหว่างการใช้เครื่องหมาย = และคำสั่ง IN
  • การใช้งาน Subquery ภายในคำสั่ง WHERE และ FROM Clause

หลังจากที่เราเคยเรียนรู้วิธีการเชื่อมโยงตารางเข้าด้วยกัน จับคู่นักเรียนกับชั้นเรียน และเชื่อมโยงครูผู้สอนในบทความก่อนหน้า วันนี้แฟรงก์ลินต้องเผชิญกับโจทย์ที่ซับซ้อนขึ้น เมื่อคำสั่ง SELECT ธรรมดาไม่เพียงพออีกต่อไป

ในบทความนี้เราจะมาทำความรู้จักกับ Subquery และ CTE ซึ่งเป็นเครื่องมือสำคัญเมื่อเราต้องการคำนวณข้อมูลบางอย่างก่อน แล้วจึงนำผลลัพธ์นั้นไปใช้ตอบคำถามอีกข้อหนึ่ง

ตัวอย่างเช่น คำถามที่ว่า "นักเรียนคนไหนบ้างที่ได้คะแนนสูงกว่าค่าเฉลี่ย?" แฟรงก์ลินไม่สามารถเปรียบเทียบได้ทันทีหากยังไม่ได้คำนวณค่าเฉลี่ยของห้องเรียนเสียก่อน

Subquery จึงเปรียบเสมือน query ภายใน query อีกทีหนึ่ง โดย Query ชั้นในจะทำหน้าที่คำนวณค่าเฉลี่ย (เช่น ได้ 78 คะแนน) ส่วน Query ชั้นนอกจะทำหน้าที่ค้นหานักเรียนที่มีคะแนนมากกว่า 78 คะแนนนั้น

sql code editor screen close up

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

Subquery เป็นแนวทางที่มีประสิทธิภาพในการเขียน SQL เมื่อเราต้องการแยกตรรกะการคำนวณออกจากเงื่อนไขหลัก ช่วยให้โค้ดมีความยืดหยุ่นและอ่านเข้าใจได้ง่ายขึ้นในกรณีที่ซับซ้อนปานกลาง

นอกจากนี้ Subquery ยังสามารถส่งค่ากลับมาได้มากกว่าหนึ่งค่า เช่น เมื่อเราต้องการค้นหานักเรียนที่อยู่ในห้อง 'Form 4A' หรือ 'Form 3B' โดยเราจะต้องใช้ตัวดำเนินการ IN แทนเครื่องหมาย =

  • ใช้เครื่องหมาย = เมื่อคาดหวังผลลัพธ์เพียงค่าเดียว เช่น การหาคะแนนสูงสุด MAX(score)
  • ใช้คำสั่ง IN เมื่อ Subquery ส่งคืนค่าเป็นรายการหรือหลายแถว

อีกหนึ่งรูปแบบที่เราสามารถพบได้คือการวาง Subquery ไว้ในคำสั่ง FROM เพื่อสร้างตารางชั่วคราวขึ้นมาให้ Query ชั้นนอกนำไปใช้งานต่อ โดยจะต้องตั้งชื่อให้กับตารางชั่วคราวนั้นด้วยคำสั่ง AS

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้