- Teradata 教程
- Teradata - 首頁
- Teradata 基礎
- Teradata - 簡介
- Teradata - 安裝
- Teradata - 架構
- Teradata - 關係型概念
- Teradata - 資料型別
- Teradata - 表
- Teradata - 資料操作
- Teradata - SELECT 語句
- 邏輯運算子和條件運算子
- Teradata - 集合運算子
- Teradata - 字串操作
- Teradata - 日期/時間函式
- Teradata - 內建函式
- Teradata - 聚合函式
- Teradata - CASE 和 COALESCE
- Teradata - 主索引
- Teradata - 連線
- Teradata - 子查詢
- Teradata 高階
- Teradata - 表型別
- Teradata - 空間概念
- Teradata - 二級索引
- Teradata - 統計資訊
- Teradata - 壓縮
- Teradata - EXPLAIN
- Teradata - 雜湊演算法
- Teradata - 連線索引
- Teradata - 檢視
- Teradata - 宏
- Teradata - 儲存過程
- Teradata - 連線策略
- Teradata - 分割槽主索引
- Teradata - OLAP 函式
- Teradata - 資料保護
- Teradata - 使用者管理
- Teradata - 效能調優
- Teradata - FastLoad
- Teradata - MultiLoad
- Teradata - FastExport
- Teradata - BTEQ
- Teradata 有用資源
- Teradata - 問答
- Teradata - 快速指南
- Teradata - 有用資源
- Teradata - 討論
Teradata - 集合運算子
集合運算子組合來自多個 SELECT 語句的結果。這可能看起來類似於連線,但連線組合來自多個表的列,而集合運算子組合來自多行的行。
規則
每個 SELECT 語句的列數必須相同。
每個 SELECT 的資料型別必須相容。
ORDER BY 只能包含在最終的 SELECT 語句中。
UNION
UNION 語句用於組合來自多個 SELECT 語句的結果。它忽略重複項。
語法
以下是 UNION 語句的基本語法。
SELECT col1, col2, col3… FROM <table 1> [WHERE condition] UNION SELECT col1, col2, col3… FROM <table 2> [WHERE condition];
示例
考慮以下員工表和薪資表。
| 員工編號 | 名字 | 姓氏 | 入職日期 | 部門編號 | 出生日期 |
|---|---|---|---|---|---|
| 101 | 邁克 | 詹姆斯 | 3/27/2005 | 1 | 1/5/1980 |
| 102 | 羅伯特 | 威廉姆斯 | 4/25/2007 | 2 | 3/5/1983 |
| 103 | 彼得 | 保羅 | 3/21/2007 | 2 | 4/1/1983 |
| 104 | 亞歷克斯 | 斯圖爾特 | 2/1/2008 | 2 | 11/6/1984 |
| 105 | 羅伯特 | 詹姆斯 | 1/4/2008 | 3 | 12/1/1984 |
| 員工編號 | 總額 | 扣除額 | 淨收入 |
|---|---|---|---|
| 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 查詢組合了 Employee 和 Salary 表中的 EmployeeNo 值。
SELECT EmployeeNo FROM Employee UNION SELECT EmployeeNo FROM Salary;
當查詢執行時,它會生成以下輸出。
EmployeeNo ----------- 101 102 103 104 105
UNION ALL
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
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
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
廣告