Teradata - Toán tử SET

Toán tử SET kết hợp các kết quả từ nhiều câu lệnh SELECT. Điều này có thể trông tương tự như Tham gia, nhưng kết hợp kết hợp các cột từ nhiều bảng trong khi toán tử SET kết hợp các hàng từ nhiều hàng.

Quy tắc

  • Số cột từ mỗi câu lệnh SELECT phải giống nhau.

  • Các kiểu dữ liệu từ mỗi SELECT phải tương thích.

  • ORDER BY chỉ nên được đưa vào câu lệnh SELECT cuối cùng.

LIÊN HIỆP

Câu lệnh UNION được sử dụng để kết hợp các kết quả từ nhiều câu lệnh SELECT. Nó bỏ qua các bản sao.

Cú pháp

Sau đây là cú pháp cơ bản của câu lệnh UNION.

SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
UNION  

SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];

Thí dụ

Hãy xem xét bảng nhân viên và bảng lương sau đây.

Nhân viên Không Tên đầu tiên LastName Ngày tham gia Bộ phận Không Ngày sinh
101 Mike James 27/3/2005 1 1/5/1980
102 Robert Williams 25/4/2007 2 3/5/1983
103 Peter Paul 21/3/2007 2 4/1/1983
104 Alex Stuart 2/1/2008 2 11/6/1984
105 Robert James 1/4/2008 3 12/1/1984
Nhân viên Không Tổng Khấu trừ 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

Truy vấn UNION sau đây kết hợp giá trị EmployeeNo từ cả bảng Employee và Salary.

SELECT EmployeeNo 
FROM  
Employee 
UNION 

SELECT EmployeeNo 
FROM  
Salary;

Khi truy vấn được thực thi, nó tạo ra kết quả sau.

EmployeeNo 
----------- 
   101 
   102 
   103 
   104 
   105

ĐOÀN KẾT TẤT CẢ

Câu lệnh UNION ALL tương tự như UNION, nó kết hợp các kết quả từ nhiều bảng bao gồm các hàng trùng lặp.

Cú pháp

Sau đây là cú pháp cơ bản của câu lệnh UNION ALL.

SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
UNION ALL 

SELECT col1, col2, col3…
FROM  
<table 2> 
[WHERE condition];

Thí dụ

Sau đây là một ví dụ cho câu lệnh UNION ALL.

SELECT EmployeeNo 
FROM  
Employee 
UNION ALL 

SELECT EmployeeNo 
FROM  
Salary;

Khi truy vấn trên được thực thi, nó tạo ra kết quả sau. Bạn có thể thấy rằng nó cũng trả về các bản sao.

EmployeeNo 
----------- 
    101 
    104 
    102 
    105 
    103 
    101 
    104 
    102 
    103

GIAO NHAU

Lệnh INTERSECT cũng được sử dụng để kết hợp các kết quả từ nhiều câu lệnh SELECT. Nó trả về các hàng từ câu lệnh SELECT đầu tiên có khớp tương ứng trong các câu lệnh SELECT thứ hai. Nói cách khác, nó trả về các hàng tồn tại trong cả hai câu lệnh SELECT.

Cú pháp

Sau đây là cú pháp cơ bản của câu lệnh INTERSECT.

SELECT col1, col2, col3… 
FROM  
<table 1>
[WHERE condition] 
INTERSECT 

SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];

Thí dụ

Sau đây là một ví dụ về câu lệnh INTERSECT. Nó trả về giá trị EmployeeNo tồn tại trong cả hai bảng.

SELECT EmployeeNo 
FROM  
Employee 
INTERSECT 

SELECT EmployeeNo 
FROM  
Salary;

Khi truy vấn trên được thực thi, nó sẽ trả về các bản ghi sau. EmployeeNo 105 bị loại trừ vì nó không tồn tại trong bảng SALARY.

EmployeeNo 
----------- 
   101 
   104 
   102 
   103

TRỪ / TRỪ

Lệnh MINUS / EXCEPT kết hợp các hàng từ nhiều bảng và trả về các hàng nằm trong SELECT đầu tiên nhưng không có trong SELECT thứ hai. Cả hai đều trả về cùng một kết quả.

Cú pháp

Sau đây là cú pháp cơ bản của câu lệnh MINUS.

SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
MINUS 

SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];

Thí dụ

Sau đây là một ví dụ về câu lệnh MINUS.

SELECT EmployeeNo 
FROM  
Employee 
MINUS 

SELECT EmployeeNo 
FROM  
Salary;

Khi truy vấn này được thực thi, nó trả về bản ghi sau.

EmployeeNo 
----------- 
   105