แบบสอบถามย่อย SQL

หมายเหตุ: เราต้องการมอบเนื้อหาวิธีใช้ปัจจุบันในภาษาของคุณให้กับคุณโดยเร็วที่สุดเท่าที่เราจะทำได้ หน้านี้ได้รับการแปลด้วยระบบอัตโนมัติ และอาจมีข้อผิดพลาดทางไวยากรณ์หรือความไม่ถูกต้อง จุดประสงค์ของเราคือเพื่อให้เนื้อหานี้มีประโยชน์กับคุณ คุณแจ้งให้เราทราบว่าข้อมูลดังกล่าวมีประโยชน์ต่อคุณที่ด้านล่างของหน้านี้ได้หรือไม่ นี่คือบทความภาษาอังกฤษเพื่อให้ง่ายต่อการอ้างอิง

คิวรีย่อยเป็นคำสั่ง select ที่ซ้อนกันภายในตัวเลือก เลือก... ถาม แทรก... คำชี้แจง INTO ลบ หรืออัปเดตหรือภาย ในแบบสอบถามย่อยอื่น

ไวยากรณ์

คุณสามารถใช้ฟอร์มที่สามของไวยากรณ์เพื่อสร้างคิวรีย่อย:

เปรียบเทียบ [ใด ๆ | ทั้งหมด | บาง] (sqlstatement)

นิพจน์ [ไม่] ใน (sqlstatement)

[ไม่] EXISTS (sqlstatement)

คิวรีย่อยมีส่วนต่อไปนี้:

ส่วน

คำอธิบาย

เปรียบเทียบ

แอนิพจน์ และตัวดำเนินการเปรียบเทียบที่เปรียบเทียบนิพจน์ ด้วยผลลัพธ์ของแบบสอบถามย่อย

นิพจน์

นิพจน์ที่คุณต้องการค้นหาชุดผลลัพธ์ของแบบสอบถามย่อย

sqlstatement

คำสั่ง select ตามรูปแบบเดียวกันและกฎเป็นเลือกคำสั่งอื่น ๆ จะต้องอยู่ภายในวงเล็บ


ข้อสังเกต

คุณสามารถใช้คิวรีย่อยแทนการใช้นิพจน์ ในรายการเขตข้อมูลของคำสั่ง select หรือในตำแหน่งหรือคำสั่ง HAVING ในคิวรีย่อย คุณสามารถใช้คำสั่ง select เพื่อแสดงชุดของอย่าง น้อยหนึ่งค่าที่ระบุจะประเมินในคำสั่ง WHERE หรือมีคำสั่งนิพจน์

ใช้เพรดิเคตใด ๆ หรือบาง ซึ่งเป็นคำที่มี เพื่อดึงระเบียนในแบบสอบถามหลักที่เป็นไปตามการเปรียบเทียบกับระเบียนเรียกใช้ในแบบสอบถามย่อย ตัวอย่างต่อไปนี้ส่งกลับราคาต่อหน่วยมีค่ามากกว่าที่ใด ๆ ผลิตภัณฑ์ที่ขายได้ที่ส่วนลด 25 เปอร์เซ็นต์หรือมากกว่าผลิตภัณฑ์ทั้งหมด:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

ใช้เพรดิเคตทั้งหมดเพื่อเรียกใช้เฉพาะระเบียนในแบบสอบถามหลักที่เป็นไปตามการเปรียบเทียบกับระเบียนทั้งหมดที่เรียกใช้ในแบบสอบถามย่อย ถ้าคุณมีการเปลี่ยนแปลงใด ๆ กับทั้งหมดในตัวอย่างก่อนหน้านี้ คิวรีจะส่งกลับเฉพาะผลิตภัณฑ์ที่ราคาต่อหน่วยมีค่ามากกว่าของผลิตภัณฑ์ทั้งหมดที่ขายได้ที่ส่วนลด 25 เปอร์เซ็นต์หรือมากกว่า นี่คือข้อจำกัดมาก

ใช้เพรดิเคต IN เพื่อเรียกเฉพาะระเบียนในแบบสอบถามหลักที่ประกอบด้วยค่าเท่ากับบางระเบียนในแบบสอบถามย่อย ตัวอย่างต่อไปนี้ส่งกลับผลิตภัณฑ์ทั้งหมดที่ มีส่วนลด 25 เปอร์เซ็นต์หรือเพิ่มเติม:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

ในทางกลับกัน คุณสามารถใช้ NOT IN เพื่อเรียกข้อมูลเฉพาะระเบียนในแบบสอบถามหลักที่ไม่มีระเบียนในแบบสอบถามย่อยที่ประกอบด้วยค่าเท่านั้น

ใช้เพรดิเคต EXISTS (โดยไม่เลือกคำสงวน) ในการเปรียบเทียบจริง/เท็จเพื่อกำหนดว่า แบบสอบถามย่อยส่งกลับระเบียนใดก็

คุณสามารถใช้นามแฝงของชื่อตารางในคิวรีย่อยเพื่ออ้างอิงไปยังตารางที่แสดงอยู่ในคำสั่ง from ภายนอกแบบสอบถามย่อย ตัวอย่างต่อไปนี้ส่งกลับชื่อของพนักงานที่มีเงินเดือนเดือนโดยเฉลี่ยของพนักงานทั้งหมดที่มีตำแหน่งงานเดียวกันมากกว่า หรือเท่ากับ ตารางพนักงานถูกกำหนดนามแฝง "T1":

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

ในตัวอย่างข้างต้น AS คำสงวน ไม่ทำก็

อนุญาตให้มีในคิวรีย่อยบางนั่นคือโดยเฉพาะอย่างยิ่ง เป็นเพรดิเคต (ที่มีในคำสั่ง where) คิวรีย่อยเป็นผลลัพธ์ (เหล่านั้นในรายการเลือก) ไม่ได้ในคิวรีแบบตาราง



ขยายทักษะ Office ของคุณ
สำรวจการฝึกอบรม
รับฟีเจอร์ใหม่ก่อนใคร
เข้าร่วม Office Insider

ข้อมูลนี้เป็นประโยชน์หรือไม่

ขอบคุณสำหรับคำติชมของคุณ!

ขอขอบคุณสำหรับคำติชมของคุณ! เราคิดว่าอาจเป็นประโยชน์ที่จะให้คุณได้ติดต่อกับหนึ่งในตัวแทนฝ่ายสนับสนุน Office ของเรา

×