Teradata - ผู้ประกอบการตลาดหลักทรัพย์
ตัวดำเนินการ SET รวมผลลัพธ์จากคำสั่ง SELECT หลายคำสั่ง สิ่งนี้อาจมีลักษณะคล้ายกับการเข้าร่วม แต่การรวมจะรวมคอลัมน์จากหลายตารางในขณะที่ตัวดำเนินการ SET รวมแถวจากหลายแถว
กฎ
จำนวนคอลัมน์จากแต่ละคำสั่ง SELECT ควรเท่ากัน
ชนิดข้อมูลจากแต่ละ SELECT ต้องเข้ากันได้
ORDER BY ควรรวมไว้ในคำสั่ง SELECT สุดท้ายเท่านั้น
ยูเนี่ยน
คำสั่ง UNION ใช้เพื่อรวมผลลัพธ์จากคำสั่ง SELECT หลายรายการ จะละเว้นรายการที่ซ้ำกัน
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง UNION
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
UNION
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
ตัวอย่าง
พิจารณาตารางพนักงานและตารางเงินเดือนต่อไปนี้
พนักงาน | ชื่อจริง | นามสกุล | วันที่เข้าร่วม | แผนก | วันที่เกิด |
---|---|---|---|---|---|
101 | ไมค์ | เจมส์ | 27/3/2548 | 1 | 1/5/1980 |
102 | โรเบิร์ต | วิลเลียมส์ | 25/4/2550 | 2 | 5/3/1983 |
103 | ปีเตอร์ | พอล | 21/3/2550 | 2 | 1/1/2553 |
104 | อเล็กซ์ | สจวร์ต | 1/2/2561 | 2 | 11/6/1984 |
105 | โรเบิร์ต | เจมส์ | 1/4/2561 | 3 | 1/12/1984 |
พนักงาน | ขั้นต้น | การหักเงิน | 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 |
แบบสอบถาม UNION ต่อไปนี้รวมค่า EmployeeNo จากทั้งตาราง Employee และ Salary
SELECT EmployeeNo
FROM
Employee
UNION
SELECT EmployeeNo
FROM
Salary;
เมื่อเรียกใช้แบบสอบถามจะสร้างผลลัพธ์ต่อไปนี้
EmployeeNo
-----------
101
102
103
104
105
ยูเนี่ยนทั้งหมด
คำสั่ง UNION ALL คล้ายกับ UNION ซึ่งรวมผลลัพธ์จากหลายตารางรวมทั้งแถวที่ซ้ำกัน
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง UNION ALL
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
UNION ALL
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
ตัวอย่าง
ต่อไปนี้เป็นตัวอย่างสำหรับคำสั่ง UNION ALL
SELECT EmployeeNo
FROM
Employee
UNION ALL
SELECT EmployeeNo
FROM
Salary;
เมื่อดำเนินการค้นหาข้างต้นจะสร้างผลลัพธ์ต่อไปนี้ คุณจะเห็นว่ามันส่งคืนรายการที่ซ้ำกันด้วย
EmployeeNo
-----------
101
104
102
105
103
101
104
102
103
ตัด
คำสั่ง INTERSECT ยังใช้เพื่อรวมผลลัพธ์จากคำสั่ง SELECT หลายคำสั่ง ส่งคืนแถวจากคำสั่ง SELECT แรกที่ตรงกันในคำสั่ง SELECT ที่สอง กล่าวอีกนัยหนึ่งคือส่งคืนแถวที่มีอยู่ในคำสั่ง SELECT ทั้งสอง
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง INTERSECT
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
INTERSECT
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
ตัวอย่าง
ต่อไปนี้เป็นตัวอย่างของคำสั่ง INTERSECT ส่งคืนค่า EmployeeNo ที่มีอยู่ในทั้งสองตาราง
SELECT EmployeeNo
FROM
Employee
INTERSECT
SELECT EmployeeNo
FROM
Salary;
เมื่อดำเนินการค้นหาข้างต้นจะส่งคืนระเบียนต่อไปนี้ EmployeeNo 105 ถูกแยกออกเนื่องจากไม่มีอยู่ในตาราง SALARY
EmployeeNo
-----------
101
104
102
103
ลบ / ยกเว้น
คำสั่ง MINUS / EXCEPT รวมแถวจากหลายตารางและส่งกลับแถวที่อยู่ใน SELECT แรก แต่ไม่อยู่ใน SELECT ที่สอง ทั้งสองให้ผลลัพธ์เหมือนกัน
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง MINUS
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
MINUS
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
ตัวอย่าง
ต่อไปนี้เป็นตัวอย่างของคำสั่ง MINUS
SELECT EmployeeNo
FROM
Employee
MINUS
SELECT EmployeeNo
FROM
Salary;
เมื่อเรียกใช้แบบสอบถามนี้จะส่งคืนระเบียนต่อไปนี้
EmployeeNo
-----------
105