MySQL Subquery Tutorial

ผู้เขียน: Janice Evans
วันที่สร้าง: 1 กรกฎาคม 2021
วันที่อัปเดต: 13 พฤษภาคม 2024
Anonim
Subquery In SQL | SQL Subquery Tutorial With Examples | SQL Tutorial For Beginners | Simplilearn
วิดีโอ: Subquery In SQL | SQL Subquery Tutorial With Examples | SQL Tutorial For Beginners | Simplilearn

เนื้อหา

แบบสอบถามย่อยเป็นข้อความค้นหาซ้อนกันภายในข้อความค้นหาอื่น ช่วยให้คุณสามารถแยกส่วนของประโยคและเป็นทางเลือกที่อ่านได้ง่ายขึ้นสำหรับการดำเนินการที่อาจต้องมีการรวมที่ซับซ้อนและสหภาพ แบบสอบถามย่อยใน 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

แบบสอบถามนี้จะแสดงสมาชิกทั้งหมดของรายชื่อผู้รับจดหมายของคุณที่อาศัยอยู่ในบราซิเลีย