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

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- เรียนรู้การใช้ Subquery เพื่อคำนวณค่าล่วงหน้าก่อนนำมาประมวลผลต่อ
- เข้าใจความแตกต่างระหว่างการใช้เครื่องหมาย = และคำสั่ง IN
- การใช้งาน Subquery ภายในคำสั่ง WHERE และ FROM Clause
หลังจากที่เราเคยเรียนรู้วิธีการเชื่อมโยงตารางเข้าด้วยกัน จับคู่นักเรียนกับชั้นเรียน และเชื่อมโยงครูผู้สอนในบทความก่อนหน้า วันนี้แฟรงก์ลินต้องเผชิญกับโจทย์ที่ซับซ้อนขึ้น เมื่อคำสั่ง SELECT ธรรมดาไม่เพียงพออีกต่อไป
ในบทความนี้เราจะมาทำความรู้จักกับ Subquery และ CTE ซึ่งเป็นเครื่องมือสำคัญเมื่อเราต้องการคำนวณข้อมูลบางอย่างก่อน แล้วจึงนำผลลัพธ์นั้นไปใช้ตอบคำถามอีกข้อหนึ่ง
ตัวอย่างเช่น คำถามที่ว่า "นักเรียนคนไหนบ้างที่ได้คะแนนสูงกว่าค่าเฉลี่ย?" แฟรงก์ลินไม่สามารถเปรียบเทียบได้ทันทีหากยังไม่ได้คำนวณค่าเฉลี่ยของห้องเรียนเสียก่อน
Subquery จึงเปรียบเสมือน query ภายใน query อีกทีหนึ่ง โดย Query ชั้นในจะทำหน้าที่คำนวณค่าเฉลี่ย (เช่น ได้ 78 คะแนน) ส่วน Query ชั้นนอกจะทำหน้าที่ค้นหานักเรียนที่มีคะแนนมากกว่า 78 คะแนนนั้น

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
Subquery เป็นแนวทางที่มีประสิทธิภาพในการเขียน SQL เมื่อเราต้องการแยกตรรกะการคำนวณออกจากเงื่อนไขหลัก ช่วยให้โค้ดมีความยืดหยุ่นและอ่านเข้าใจได้ง่ายขึ้นในกรณีที่ซับซ้อนปานกลาง
นอกจากนี้ Subquery ยังสามารถส่งค่ากลับมาได้มากกว่าหนึ่งค่า เช่น เมื่อเราต้องการค้นหานักเรียนที่อยู่ในห้อง 'Form 4A' หรือ 'Form 3B' โดยเราจะต้องใช้ตัวดำเนินการ IN แทนเครื่องหมาย =
- ใช้เครื่องหมาย
=เมื่อคาดหวังผลลัพธ์เพียงค่าเดียว เช่น การหาคะแนนสูงสุดMAX(score) - ใช้คำสั่ง
INเมื่อ Subquery ส่งคืนค่าเป็นรายการหรือหลายแถว
อีกหนึ่งรูปแบบที่เราสามารถพบได้คือการวาง Subquery ไว้ในคำสั่ง FROM เพื่อสร้างตารางชั่วคราวขึ้นมาให้ Query ชั้นนอกนำไปใช้งานต่อ โดยจะต้องตั้งชื่อให้กับตารางชั่วคราวนั้นด้วยคำสั่ง AS
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น