เนื้อหา
แบบสอบถามย่อยเป็นข้อความค้นหาซ้อนกันภายในข้อความค้นหาอื่น ช่วยให้คุณสามารถแยกส่วนของประโยคและเป็นทางเลือกที่อ่านได้ง่ายขึ้นสำหรับการดำเนินการที่อาจต้องมีการรวมที่ซับซ้อนและสหภาพ แบบสอบถามย่อยใน MySQL สามารถส่งคืนค่าแถวคอลัมน์หรือสารบัญ
ใช้ข้อความค้นหาย่อยเพื่อสร้างประโยคที่อ่านง่ายและกะทัดรัดยิ่งขึ้น (รูปภาพ Thinkstock / Comstock รูปภาพ / Getty)
ไวยากรณ์
ไวยากรณ์พื้นฐานของแบบสอบถามย่อยมีดังนี้:
SELECT * FROM table1 WHERE columnA = (SELECT columnB จาก Table2) GO
แบบสอบถามย่อยควรประกอบด้วยคำสั่ง "SELECT", "INSERT", "UPDATE", "DELETE", "SET" หรือ "DO" และคุณไม่สามารถเปลี่ยนตารางและใช้งานได้ภายในแบบสอบถามย่อยในเวลาเดียวกัน แบบสอบถามย่อยมักใช้ทางด้านขวาของ WHERE clause ซึ่งสามารถมีตัวเปรียบเทียบและตัวดำเนินการเชิงตรรกะเช่น = (เท่ากับ), <> (ต่างกัน), <= (น้อยกว่าหรือเท่ากับ),> = หรือ "ระหว่าง" (ระหว่างสองค่า), "ไม่", "และ" และ "หรือ" นอกจากนี้คุณยังสามารถใช้คำหลัก "DISTINCT", "GROUP BY", "ORDER BY" และ "LIMIT" และรวมกับคำสั่ง "JOIN" นอกเหนือจากข้อ จำกัด โดยละเอียดมีข้อ จำกัด เล็กน้อยเมื่อเขียนแบบสอบถามย่อยใน MySQL
ไม่มีข้อ จำกัด เกี่ยวกับจำนวนของแบบสอบถามย่อยภายในประโยค คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับแบบสอบถามย่อยได้ในคู่มืออ้างอิง MySQL (ดูในส่วน "ทรัพยากร")
ตัวอย่าง
สมมติว่าคุณมีสองตาราง: หนึ่งที่มีชื่อและนามสกุลที่อยู่และรหัสไปรษณีย์ของสมาชิกของรายการส่งเมล์และอีกอันหนึ่งเป็นเมืองรัฐและรหัสไปรษณีย์ ในการค้นหาชื่อของสมาชิกที่อาศัยอยู่ในบราซิเลียสามารถใช้ประโยค "select" หลายประโยคได้ คนแรกจะไปหา CEP ของบราซิเลีย:
เลือกจากรหัสจาก WHERE state = "BRASILIA" GO
จากนั้นใช้ "เลือก" สำหรับแต่ละรหัสไปรษณีย์ที่พบ:
ชื่อ SELECT, นามสกุลจากที่อยู่ WHERE cep = [codecep] GO
วิธีนี้ใช้เวลานานและง่ายต่อการทำผิดพลาด มันง่ายที่จะสูญเสียรหัสไปรษณีย์โดยเฉพาะหากมีจำนวนมากเกินไป วิธีที่ง่ายกว่าในการทำภารกิจนี้ให้สมบูรณ์คือการใช้ประโยคแรกเป็นแบบสอบถามย่อยภายในวินาที:
ชื่อ SELECT, นามสกุลจากที่อยู่ WHERE cep = (SELECT cep จากรหัส WHERE state = "BRASILIA") GO
แบบสอบถามนี้จะแสดงสมาชิกทั้งหมดของรายชื่อผู้รับจดหมายของคุณที่อาศัยอยู่ในบราซิเลีย