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