ข้ามไปที่เนื้อหาหลัก
การสนับสนุน
ลงชื่อเข้าใช้
ลงชื่อเข้าใช้ด้วย Microsoft
ลงชื่อเข้าใช้หรือสร้างบัญชี
สวัสดี
เลือกบัญชีอื่น
คุณมีหลายบัญชี
เลือกบัญชีที่คุณต้องการลงชื่อเข้าใช้

คิวรีย่อยคือคําสั่ง SELECT ที่ซ้อนกันภายใน SELECT, SELECT... INTO, INSERT... คําสั่ง INTO, DELETE หรือ UPDATE หรือภายในคิวรีย่อยอื่น

ไวยากรณ์

คุณสามารถใช้ไวยากรณ์ได้สามรูปแบบเพื่อสร้างคิวรีย่อย ดังนี้

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

นิพจน์ [NOT] IN (sqlstatement)

[NOT] EXISTS (sqlstatement)

คิวรีย่อยมีส่วนต่างๆ ดังนี้

ส่วน

คำอธิบาย

เปรียบ เทียบ

นิพจน์ และตัวดําเนินการเปรียบเทียบที่เปรียบเทียบนิพจน์กับผลลัพธ์ของคิวรีย่อย

นิพจน์

นิพจน์ที่มีการค้นหาชุดผลลัพธ์ของคิวรีย่อย

sqlstatement

คําสั่ง SELECT ที่ตามหลังรูปแบบและกฎเดียวกันกับคําสั่ง SELECT อื่นๆ ซึ่งต้องอยู่ภายในวงเล็บ


ข้อสังเกต

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

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

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

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

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

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

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

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

คุณยังสามารถใช้นามแฝงของชื่อตารางในคิวรีย่อยเพื่ออ้างอิงตารางที่แสดงในส่วนคําสั่ง 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) โดยเฉพาะ คิวรีย่อยเป็นผลลัพธ์ (รายการ SELECT) ไม่ได้รับอนุญาตให้ใช้งานในคิวรีแบบตาราง



ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย

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

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

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

×