แบบสอบถามย่อยแถวเดียว
คิวรีย่อยแบบแถวเดียวจะใช้เมื่อผลลัพธ์ของคิวรีภายนอกอิงตามค่าเดียวที่ไม่รู้จัก แม้ว่าคิวรีประเภทนี้จะเรียกอย่างเป็นทางการว่า "แถวเดียว" แต่ชื่อก็บอกเป็นนัยว่าคิวรีส่งกลับหลายคอลัมน์ แต่มีผลลัพธ์เพียงแถวเดียว อย่างไรก็ตาม คิวรีย่อยแบบแถวเดียวสามารถส่งคืนผลลัพธ์ได้เพียงแถวเดียวซึ่งประกอบด้วยคอลัมน์เดียวไปยังคิวรีภายนอก
ในการสืบค้น SELECT ด้านล่าง MySQL ภายในจะส่งกลับเพียงแถวเดียว นั่นคือ เงินเดือนขั้นต่ำสำหรับบริษัท ในทางกลับกัน ใช้ค่านี้เพื่อเปรียบเทียบเงินเดือนของพนักงานทั้งหมด และแสดงเฉพาะเงินเดือนที่มีเงินเดือนเท่ากับเงินเดือนขั้นต่ำ
SELECT first_name, salary, department_id FROM employees WHERE salary = (SELECT MIN (salary) FROM employees);
ประโยค HAVING จะใช้เมื่อผลลัพธ์ของกลุ่มของแบบสอบถามจำเป็นต้องถูกจำกัดตามเงื่อนไขบางอย่าง ถ้าต้องเปรียบเทียบผลลัพธ์ของแบบสอบถามย่อยกับฟังก์ชันกลุ่ม คุณต้องซ้อนคิวรีภายในในส่วนคำสั่ง HAVING ของคิวรีภายนอก
SELECT department_id, MIN (salary) FROM employees GROUP BY department_id HAVING MIN (salary) < (SELECT AVG (salary) FROM employees)
แบบสอบถามย่อยหลายแถว
คิวรีย่อยหลายแถวเป็นคิวรีแบบซ้อนซึ่งสามารถส่งคืนผลลัพธ์มากกว่าหนึ่งแถวไปยังคิวรีหลัก เคียวรีย่อยแบบหลายแถวมักใช้ในส่วนคำสั่ง WHERE และ HAVING เนื่องจากส่งกลับหลายแถวจึงต้องจัดการโดยตัวดำเนินการเปรียบเทียบชุด (IN, ALL, ANY) ในขณะที่ตัวดำเนินการ IN มีความหมายเดียวกับที่กล่าวถึงในบทก่อนหน้า ตัวดำเนินการใดๆ จะเปรียบเทียบค่าที่ระบุกับแต่ละค่าที่ส่งกลับโดยแบบสอบถามย่อยในขณะที่ ALL เปรียบเทียบค่ากับทุกค่าที่ส่งคืนโดยเคียวรีย่อย แบบสอบถามด้านล่างจะแสดงข้อผิดพลาดเนื่องจากแบบสอบถามย่อยแถวเดียวส่งกลับหลายแถว
SELECT first_name, department_id FROM employees WHERE department_id = (SELECT department_id FROM employees WHERE LOCATION_ID = 100)