Teradata - แบบสอบถามย่อย

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

  • แบบสอบถามสามารถมีแบบสอบถามย่อยหลายรายการและแบบสอบถามย่อยอาจมีแบบสอบถามย่อยอื่น

  • แบบสอบถามย่อยจะไม่ส่งคืนระเบียนที่ซ้ำกัน

  • หากเคียวรีย่อยส่งกลับเพียงค่าเดียวคุณสามารถใช้ตัวดำเนินการ = เพื่อใช้กับแบบสอบถามภายนอกได้ หากส่งคืนค่าหลายค่าคุณสามารถใช้ IN หรือ NOT IN

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ทั่วไปของแบบสอบถามย่อย

SELECT col1, col2, col3,… 
FROM  
Outer Table 
WHERE col1 OPERATOR ( Inner SELECT Query);

ตัวอย่าง

พิจารณาตารางเงินเดือนต่อไปนี้

พนักงาน ขั้นต้น การหักเงิน NetPay
101 40,000 4,000 36,000
102 80,000 6,000 74,000
103 90,000 7,000 83,000
104 75,000 5,000 70,000

แบบสอบถามต่อไปนี้ระบุหมายเลขพนักงานที่มีเงินเดือนสูงสุด SELECT ภายในทำหน้าที่รวมเพื่อส่งคืนค่า NetPay สูงสุดและแบบสอบถาม SELECT ภายนอกใช้ค่านี้เพื่อส่งคืนระเบียนพนักงานด้วยค่านี้

SELECT EmployeeNo, NetPay 
FROM Salary 
WHERE NetPay =  
(SELECT MAX(NetPay)  
FROM Salary);

เมื่อเรียกใช้แบบสอบถามนี้จะสร้างผลลัพธ์ต่อไปนี้

*** Query completed. One row found. 2 columns returned. 
*** Total elapsed time was 1 second.  
 EmployeeNo     NetPay 
-----------  ----------- 
    103         83000