This is an automated email from the ASF dual-hosted git repository.

xiaoyekanren pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iotdb-docs.git


The following commit(s) were added to refs/heads/main by this push:
     new 90e38c44 add set operations in table from 2091 (#1094)
90e38c44 is described below

commit 90e38c449200ae42fb21a25b14089ba2d1532e32
Author: leto-b <[email protected]>
AuthorDate: Thu Apr 23 17:44:38 2026 +0800

    add set operations in table from 2091 (#1094)
---
 src/.vuepress/sidebar/V2.0.x/en-Table.ts           |   1 +
 src/.vuepress/sidebar/V2.0.x/zh-Table.ts           |   1 +
 src/.vuepress/sidebar_timecho/V2.0.x/en-Table.ts   |   1 +
 src/.vuepress/sidebar_timecho/V2.0.x/zh-Table.ts   |   1 +
 .../Table/SQL-Manual/Set-Operations_apache.md      | 295 +++++++++++++++++++
 .../Table/SQL-Manual/Set-Operations_timecho.md     | 295 +++++++++++++++++++
 .../SQL-Manual/Set-Operations_apache.md            | 295 +++++++++++++++++++
 .../SQL-Manual/Set-Operations_timecho.md           | 295 +++++++++++++++++++
 .../Table/SQL-Manual/Set-Operations_apache.md      | 322 +++++++++++++++++++++
 .../Table/SQL-Manual/Set-Operations_timecho.md     | 322 +++++++++++++++++++++
 .../SQL-Manual/Set-Operations_apache.md            | 322 +++++++++++++++++++++
 .../SQL-Manual/Set-Operations_timecho.md           | 322 +++++++++++++++++++++
 12 files changed, 2472 insertions(+)

diff --git a/src/.vuepress/sidebar/V2.0.x/en-Table.ts 
b/src/.vuepress/sidebar/V2.0.x/en-Table.ts
index e148e6ef..aacd2678 100644
--- a/src/.vuepress/sidebar/V2.0.x/en-Table.ts
+++ b/src/.vuepress/sidebar/V2.0.x/en-Table.ts
@@ -233,6 +233,7 @@ export const enSidebar = {
             { text: 'ORDER BY Clause', link: 'OrderBy-Clause' },
             { text: 'LIMIT&OFFSET Clause', link: 'Limit-Offset-Clause' },
             { text: 'Nested Queries', link: 'Nested-Queries' },
+            { text: 'Set Operations', link: 'Set-Operations_apache' },
           ],
         },
         { text: 'Maintenance Statements', link: 
'SQL-Maintenance-Statements_apache' },
diff --git a/src/.vuepress/sidebar/V2.0.x/zh-Table.ts 
b/src/.vuepress/sidebar/V2.0.x/zh-Table.ts
index b66faad9..ef510ba6 100644
--- a/src/.vuepress/sidebar/V2.0.x/zh-Table.ts
+++ b/src/.vuepress/sidebar/V2.0.x/zh-Table.ts
@@ -230,6 +230,7 @@ export const zhSidebar = {
             { text: 'ORDER BY子句', link: 'OrderBy-Clause' },
             { text: 'LIMIT&OFFSET子句', link: 'Limit-Offset-Clause' },
             { text: '嵌套查询', link: 'Nested-Queries' },
+            { text: '集合操作', link: 'Set-Operations_apache' },
           ],
         },
         { text: '运维语句', link: 'SQL-Maintenance-Statements_apache' },
diff --git a/src/.vuepress/sidebar_timecho/V2.0.x/en-Table.ts 
b/src/.vuepress/sidebar_timecho/V2.0.x/en-Table.ts
index 49272a09..4f9a391c 100644
--- a/src/.vuepress/sidebar_timecho/V2.0.x/en-Table.ts
+++ b/src/.vuepress/sidebar_timecho/V2.0.x/en-Table.ts
@@ -265,6 +265,7 @@ export const enSidebar = {
             { text: 'LIMIT&OFFSET Clause', link: 'Limit-Offset-Clause' },
             { text: 'Nested Queries', link: 'Nested-Queries' },
             { text: 'Pattern Query', link: 'Row-Pattern-Recognition_timecho' },
+            { text: 'Set Operations', link: 'Set-Operations_timecho' },
           ],
         },
         { text: 'Maintenance Statements', link: 
'SQL-Maintenance-Statements_timecho' },
diff --git a/src/.vuepress/sidebar_timecho/V2.0.x/zh-Table.ts 
b/src/.vuepress/sidebar_timecho/V2.0.x/zh-Table.ts
index 4400dcae..c665d1a1 100644
--- a/src/.vuepress/sidebar_timecho/V2.0.x/zh-Table.ts
+++ b/src/.vuepress/sidebar_timecho/V2.0.x/zh-Table.ts
@@ -256,6 +256,7 @@ export const zhSidebar = {
             { text: 'LIMIT&OFFSET子句', link: 'Limit-Offset-Clause' },
             { text: '嵌套查询', link: 'Nested-Queries' },
             { text: '模式查询', link: 'Row-Pattern-Recognition_timecho' },
+            { text: '集合操作', link: 'Set-Operations_timecho' },
           ],
         },
         { text: '运维语句', link: 'SQL-Maintenance-Statements_timecho' },
diff --git a/src/UserGuide/Master/Table/SQL-Manual/Set-Operations_apache.md 
b/src/UserGuide/Master/Table/SQL-Manual/Set-Operations_apache.md
new file mode 100644
index 00000000..5b617d31
--- /dev/null
+++ b/src/UserGuide/Master/Table/SQL-Manual/Set-Operations_apache.md
@@ -0,0 +1,295 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+# Set Operations
+
+IoTDB natively supports standard SQL set operations, including three core 
operators: **UNION**, **INTERSECT**, and **EXCEPT**. These operations enable 
seamless merging, comparison, and filtering of query results from multiple 
time-series data sources, greatly improving the flexibility and efficiency of 
time-series data analysis.
+
+> Note: This feature is available since version 2.0.9-beta.
+
+## 1. UNION
+### 1.1 Overview
+The UNION operator combines all rows from two result sets (order not 
guaranteed), supporting both duplicate elimination (default) and duplicate 
retention modes.
+
+### 1.2 Syntax
+```sql
+query UNION (ALL | DISTINCT) query
+```
+
+**Description**
+1. **Duplicate Handling**
+    - Default (`UNION` or `UNION DISTINCT`): Automatically removes duplicate 
rows.
+    - `UNION ALL`: Preserves all rows (including duplicates) with higher 
performance.
+
+2. **Input Requirements**
+    - The two queries must return the same number of columns.
+    - Corresponding columns must have compatible data types:
+        - Numeric compatibility: `INT32`, `INT64`, `FLOAT`, and `DOUBLE` are 
fully compatible with each other.
+        - String compatibility: `TEXT` and `STRING` are fully compatible.
+        - Special rule: `INT64` is compatible with `TIMESTAMP`.
+
+3. **Result Set Rules**
+    - Column names and order are inherited from the first query.
+
+### 1.3 Examples
+Using the [sample data](../Reference/Sample-Data.md):
+
+1. Get distinct non-null device and temperature records from `table1` and 
`table2`
+```sql
+SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
+UNION
+SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
+
+-- Equivalent to:
+SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
+UNION DISTINCT
+SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       88.0|
++---------+-----------+
+Total line number = 5
+It costs 0.074s
+```
+
+2. Get all non-null device and temperature records from `table1` and `table2` 
(including duplicates)
+```sql
+SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
+UNION ALL
+SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       85.0|
+|      100|       88.0|
+|      100|       90.0|
+|      100|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       85.0|
+|      100|       90.0|
++---------+-----------+
+Total line number = 17
+It costs 0.108s
+```
+
+> **Notes**
+> - Set operations **do not guarantee result order**; actual output may differ 
from examples.
+
+
+## 2. INTERSECT
+### 2.1 Overview
+The INTERSECT operator returns rows that exist in both result sets (order not 
guaranteed), supporting both duplicate elimination (default) and duplicate 
retention modes.
+
+### 2.2 Syntax
+```sql
+query1 INTERSECT [ALL | DISTINCT] query2
+```
+
+**Description**
+1. **Duplicate Handling**
+    - Default (`INTERSECT` or `INTERSECT DISTINCT`): Automatically removes 
duplicate rows.
+    - `INTERSECT ALL`: Preserves duplicate rows, with slightly lower 
performance.
+
+2. **Precedence Rules**
+    - `INTERSECT` has higher precedence than `UNION` and `EXCEPT`
+      (e.g., `A UNION B INTERSECT C` is equivalent to `A UNION (B INTERSECT 
C)`).
+    - Evaluation is left-to-right
+      (e.g., `A INTERSECT B INTERSECT C` is equivalent to `(A INTERSECT B) 
INTERSECT C`).
+
+3. **Input Requirements**
+    - The two queries must return the same number of columns.
+    - Corresponding columns must have compatible data types (same rules as 
UNION).
+    - NULL values are treated as equal (`NULL IS NOT DISTINCT FROM NULL`).
+    - If the `time` column is not included in `SELECT`, it does not 
participate in comparison and will not appear in the result.
+
+4. **Result Set Rules**
+    - Column names and order are inherited from the first query.
+
+### 2.3 Examples
+Using the [sample data](../Reference/Sample-Data.md):
+
+1. Get distinct common device and temperature records from `table1` and 
`table2`
+```sql
+SELECT device_id, temperature FROM table1
+INTERSECT
+SELECT device_id, temperature FROM table2;
+
+-- Equivalent to:
+SELECT device_id, temperature FROM table1
+INTERSECT DISTINCT
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       85.0|
+|      100|       null|
+|      100|       90.0|
+|      100|       85.0|
++---------+-----------+
+Total line number = 5
+It costs 0.087s
+```
+
+2. Get all common device and temperature records from `table1` and `table2` 
(including duplicates)
+```sql
+SELECT device_id, temperature FROM table1
+INTERSECT ALL
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      100|       85.0|
+|      100|       90.0|
+|      100|       null|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       90.0|
++---------+-----------+
+Total line number = 6
+It costs 0.139s
+```
+
+> **Notes**
+> - Set operations **do not guarantee result order**.
+> - When mixed with `UNION`/`EXCEPT`, use parentheses to explicitly specify 
precedence
+    >   (e.g., `A INTERSECT (B UNION C)`).
+
+
+## 3. EXCEPT
+### 3.1 Overview
+The EXCEPT operator returns rows that exist in the first result set but 
**not** in the second (order not guaranteed), supporting both duplicate 
elimination (default) and duplicate retention modes.
+
+### 3.2 Syntax
+```sql
+query1 EXCEPT [ALL | DISTINCT] query2
+```
+
+**Description**
+1. **Duplicate Handling**
+    - Default (`EXCEPT` or `EXCEPT DISTINCT`): Automatically removes duplicate 
rows.
+    - `EXCEPT ALL`: Preserves duplicate rows, with slightly lower performance.
+
+2. **Precedence Rules**
+    - `EXCEPT` has the same precedence as `UNION`, and lower precedence than 
`INTERSECT`
+      (e.g., `A INTERSECT B EXCEPT C` is equivalent to `(A INTERSECT B) EXCEPT 
C`).
+    - Evaluation is left-to-right
+      (e.g., `A EXCEPT B EXCEPT C` is equivalent to `(A EXCEPT B) EXCEPT C`).
+
+3. **Input Requirements**
+    - The two queries must return the same number of columns.
+    - Corresponding columns must have compatible data types (same rules as 
UNION).
+    - NULL values are treated as equal (`NULL IS NOT DISTINCT FROM NULL`).
+    - If the `time` column is not included in `SELECT`, it does not 
participate in comparison and will not appear in the result.
+
+4. **Result Set Rules**
+    - Column names and order are inherited from the first query.
+
+### 3.3 Examples
+Using the [sample data](../Reference/Sample-Data.md):
+
+1. Get distinct records from `table1` that do not exist in `table2`
+```sql
+SELECT device_id, temperature FROM table1
+EXCEPT
+SELECT device_id, temperature FROM table2;
+
+-- Equivalent to:
+SELECT device_id, temperature FROM table1
+EXCEPT DISTINCT
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       null|
+|      100|       88.0|
++---------+-----------+
+Total line number = 2
+It costs 0.173s
+```
+
+2. Get all records from `table1` that do not exist in `table2` (including 
duplicates)
+```sql
+SELECT device_id, temperature FROM table1
+EXCEPT ALL
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      100|       85.0|
+|      100|       88.0|
+|      100|       90.0|
+|      100|       90.0|
+|      100|       null|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       90.0|
+|      101|       null|
+|      101|       null|
+|      101|       null|
+|      101|       null|
++---------+-----------+
+Total line number = 12
+It costs 0.155s
+```
+
+> **Notes**
+> - Set operations **do not guarantee result order**.
+> - When mixed with `UNION`/`INTERSECT`, use parentheses to explicitly specify 
precedence
+    >   (e.g., `A EXCEPT (B INTERSECT C)`).
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/SQL-Manual/Set-Operations_timecho.md 
b/src/UserGuide/Master/Table/SQL-Manual/Set-Operations_timecho.md
new file mode 100644
index 00000000..3628b15e
--- /dev/null
+++ b/src/UserGuide/Master/Table/SQL-Manual/Set-Operations_timecho.md
@@ -0,0 +1,295 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+# Set Operations
+
+IoTDB natively supports standard SQL set operations, including three core 
operators: **UNION**, **INTERSECT**, and **EXCEPT**. These operations enable 
seamless merging, comparison, and filtering of query results from multiple 
time-series data sources, greatly improving the flexibility and efficiency of 
time-series data analysis.
+
+> Note: This feature is available since version 2.0.9.1.
+
+## 1. UNION
+### 1.1 Overview
+The UNION operator combines all rows from two result sets (order not 
guaranteed), supporting both duplicate elimination (default) and duplicate 
retention modes.
+
+### 1.2 Syntax
+```sql
+query UNION (ALL | DISTINCT) query
+```
+
+**Description**
+1. **Duplicate Handling**
+    - Default (`UNION` or `UNION DISTINCT`): Automatically removes duplicate 
rows.
+    - `UNION ALL`: Preserves all rows (including duplicates) with higher 
performance.
+
+2. **Input Requirements**
+    - The two queries must return the same number of columns.
+    - Corresponding columns must have compatible data types:
+        - Numeric compatibility: `INT32`, `INT64`, `FLOAT`, and `DOUBLE` are 
fully compatible with each other.
+        - String compatibility: `TEXT` and `STRING` are fully compatible.
+        - Special rule: `INT64` is compatible with `TIMESTAMP`.
+
+3. **Result Set Rules**
+    - Column names and order are inherited from the first query.
+
+### 1.3 Examples
+Using the [sample data](../Reference/Sample-Data.md):
+
+1. Get distinct non-null device and temperature records from `table1` and 
`table2`
+```sql
+SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
+UNION
+SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
+
+-- Equivalent to:
+SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
+UNION DISTINCT
+SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       88.0|
++---------+-----------+
+Total line number = 5
+It costs 0.074s
+```
+
+2. Get all non-null device and temperature records from `table1` and `table2` 
(including duplicates)
+```sql
+SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
+UNION ALL
+SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       85.0|
+|      100|       88.0|
+|      100|       90.0|
+|      100|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       85.0|
+|      100|       90.0|
++---------+-----------+
+Total line number = 17
+It costs 0.108s
+```
+
+> **Notes**
+> - Set operations **do not guarantee result order**; actual output may differ 
from examples.
+
+
+## 2. INTERSECT
+### 2.1 Overview
+The INTERSECT operator returns rows that exist in both result sets (order not 
guaranteed), supporting both duplicate elimination (default) and duplicate 
retention modes.
+
+### 2.2 Syntax
+```sql
+query1 INTERSECT [ALL | DISTINCT] query2
+```
+
+**Description**
+1. **Duplicate Handling**
+    - Default (`INTERSECT` or `INTERSECT DISTINCT`): Automatically removes 
duplicate rows.
+    - `INTERSECT ALL`: Preserves duplicate rows, with slightly lower 
performance.
+
+2. **Precedence Rules**
+    - `INTERSECT` has higher precedence than `UNION` and `EXCEPT`
+      (e.g., `A UNION B INTERSECT C` is equivalent to `A UNION (B INTERSECT 
C)`).
+    - Evaluation is left-to-right
+      (e.g., `A INTERSECT B INTERSECT C` is equivalent to `(A INTERSECT B) 
INTERSECT C`).
+
+3. **Input Requirements**
+    - The two queries must return the same number of columns.
+    - Corresponding columns must have compatible data types (same rules as 
UNION).
+    - NULL values are treated as equal (`NULL IS NOT DISTINCT FROM NULL`).
+    - If the `time` column is not included in `SELECT`, it does not 
participate in comparison and will not appear in the result.
+
+4. **Result Set Rules**
+    - Column names and order are inherited from the first query.
+
+### 2.3 Examples
+Using the [sample data](../Reference/Sample-Data.md):
+
+1. Get distinct common device and temperature records from `table1` and 
`table2`
+```sql
+SELECT device_id, temperature FROM table1
+INTERSECT
+SELECT device_id, temperature FROM table2;
+
+-- Equivalent to:
+SELECT device_id, temperature FROM table1
+INTERSECT DISTINCT
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       85.0|
+|      100|       null|
+|      100|       90.0|
+|      100|       85.0|
++---------+-----------+
+Total line number = 5
+It costs 0.087s
+```
+
+2. Get all common device and temperature records from `table1` and `table2` 
(including duplicates)
+```sql
+SELECT device_id, temperature FROM table1
+INTERSECT ALL
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      100|       85.0|
+|      100|       90.0|
+|      100|       null|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       90.0|
++---------+-----------+
+Total line number = 6
+It costs 0.139s
+```
+
+> **Notes**
+> - Set operations **do not guarantee result order**.
+> - When mixed with `UNION`/`EXCEPT`, use parentheses to explicitly specify 
precedence
+    >   (e.g., `A INTERSECT (B UNION C)`).
+
+
+## 3. EXCEPT
+### 3.1 Overview
+The EXCEPT operator returns rows that exist in the first result set but 
**not** in the second (order not guaranteed), supporting both duplicate 
elimination (default) and duplicate retention modes.
+
+### 3.2 Syntax
+```sql
+query1 EXCEPT [ALL | DISTINCT] query2
+```
+
+**Description**
+1. **Duplicate Handling**
+    - Default (`EXCEPT` or `EXCEPT DISTINCT`): Automatically removes duplicate 
rows.
+    - `EXCEPT ALL`: Preserves duplicate rows, with slightly lower performance.
+
+2. **Precedence Rules**
+    - `EXCEPT` has the same precedence as `UNION`, and lower precedence than 
`INTERSECT`
+      (e.g., `A INTERSECT B EXCEPT C` is equivalent to `(A INTERSECT B) EXCEPT 
C`).
+    - Evaluation is left-to-right
+      (e.g., `A EXCEPT B EXCEPT C` is equivalent to `(A EXCEPT B) EXCEPT C`).
+
+3. **Input Requirements**
+    - The two queries must return the same number of columns.
+    - Corresponding columns must have compatible data types (same rules as 
UNION).
+    - NULL values are treated as equal (`NULL IS NOT DISTINCT FROM NULL`).
+    - If the `time` column is not included in `SELECT`, it does not 
participate in comparison and will not appear in the result.
+
+4. **Result Set Rules**
+    - Column names and order are inherited from the first query.
+
+### 3.3 Examples
+Using the [sample data](../Reference/Sample-Data.md):
+
+1. Get distinct records from `table1` that do not exist in `table2`
+```sql
+SELECT device_id, temperature FROM table1
+EXCEPT
+SELECT device_id, temperature FROM table2;
+
+-- Equivalent to:
+SELECT device_id, temperature FROM table1
+EXCEPT DISTINCT
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       null|
+|      100|       88.0|
++---------+-----------+
+Total line number = 2
+It costs 0.173s
+```
+
+2. Get all records from `table1` that do not exist in `table2` (including 
duplicates)
+```sql
+SELECT device_id, temperature FROM table1
+EXCEPT ALL
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      100|       85.0|
+|      100|       88.0|
+|      100|       90.0|
+|      100|       90.0|
+|      100|       null|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       90.0|
+|      101|       null|
+|      101|       null|
+|      101|       null|
+|      101|       null|
++---------+-----------+
+Total line number = 12
+It costs 0.155s
+```
+
+> **Notes**
+> - Set operations **do not guarantee result order**.
+> - When mixed with `UNION`/`INTERSECT`, use parentheses to explicitly specify 
precedence
+    >   (e.g., `A EXCEPT (B INTERSECT C)`).
\ No newline at end of file
diff --git a/src/UserGuide/latest-Table/SQL-Manual/Set-Operations_apache.md 
b/src/UserGuide/latest-Table/SQL-Manual/Set-Operations_apache.md
new file mode 100644
index 00000000..5b617d31
--- /dev/null
+++ b/src/UserGuide/latest-Table/SQL-Manual/Set-Operations_apache.md
@@ -0,0 +1,295 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+# Set Operations
+
+IoTDB natively supports standard SQL set operations, including three core 
operators: **UNION**, **INTERSECT**, and **EXCEPT**. These operations enable 
seamless merging, comparison, and filtering of query results from multiple 
time-series data sources, greatly improving the flexibility and efficiency of 
time-series data analysis.
+
+> Note: This feature is available since version 2.0.9-beta.
+
+## 1. UNION
+### 1.1 Overview
+The UNION operator combines all rows from two result sets (order not 
guaranteed), supporting both duplicate elimination (default) and duplicate 
retention modes.
+
+### 1.2 Syntax
+```sql
+query UNION (ALL | DISTINCT) query
+```
+
+**Description**
+1. **Duplicate Handling**
+    - Default (`UNION` or `UNION DISTINCT`): Automatically removes duplicate 
rows.
+    - `UNION ALL`: Preserves all rows (including duplicates) with higher 
performance.
+
+2. **Input Requirements**
+    - The two queries must return the same number of columns.
+    - Corresponding columns must have compatible data types:
+        - Numeric compatibility: `INT32`, `INT64`, `FLOAT`, and `DOUBLE` are 
fully compatible with each other.
+        - String compatibility: `TEXT` and `STRING` are fully compatible.
+        - Special rule: `INT64` is compatible with `TIMESTAMP`.
+
+3. **Result Set Rules**
+    - Column names and order are inherited from the first query.
+
+### 1.3 Examples
+Using the [sample data](../Reference/Sample-Data.md):
+
+1. Get distinct non-null device and temperature records from `table1` and 
`table2`
+```sql
+SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
+UNION
+SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
+
+-- Equivalent to:
+SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
+UNION DISTINCT
+SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       88.0|
++---------+-----------+
+Total line number = 5
+It costs 0.074s
+```
+
+2. Get all non-null device and temperature records from `table1` and `table2` 
(including duplicates)
+```sql
+SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
+UNION ALL
+SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       85.0|
+|      100|       88.0|
+|      100|       90.0|
+|      100|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       85.0|
+|      100|       90.0|
++---------+-----------+
+Total line number = 17
+It costs 0.108s
+```
+
+> **Notes**
+> - Set operations **do not guarantee result order**; actual output may differ 
from examples.
+
+
+## 2. INTERSECT
+### 2.1 Overview
+The INTERSECT operator returns rows that exist in both result sets (order not 
guaranteed), supporting both duplicate elimination (default) and duplicate 
retention modes.
+
+### 2.2 Syntax
+```sql
+query1 INTERSECT [ALL | DISTINCT] query2
+```
+
+**Description**
+1. **Duplicate Handling**
+    - Default (`INTERSECT` or `INTERSECT DISTINCT`): Automatically removes 
duplicate rows.
+    - `INTERSECT ALL`: Preserves duplicate rows, with slightly lower 
performance.
+
+2. **Precedence Rules**
+    - `INTERSECT` has higher precedence than `UNION` and `EXCEPT`
+      (e.g., `A UNION B INTERSECT C` is equivalent to `A UNION (B INTERSECT 
C)`).
+    - Evaluation is left-to-right
+      (e.g., `A INTERSECT B INTERSECT C` is equivalent to `(A INTERSECT B) 
INTERSECT C`).
+
+3. **Input Requirements**
+    - The two queries must return the same number of columns.
+    - Corresponding columns must have compatible data types (same rules as 
UNION).
+    - NULL values are treated as equal (`NULL IS NOT DISTINCT FROM NULL`).
+    - If the `time` column is not included in `SELECT`, it does not 
participate in comparison and will not appear in the result.
+
+4. **Result Set Rules**
+    - Column names and order are inherited from the first query.
+
+### 2.3 Examples
+Using the [sample data](../Reference/Sample-Data.md):
+
+1. Get distinct common device and temperature records from `table1` and 
`table2`
+```sql
+SELECT device_id, temperature FROM table1
+INTERSECT
+SELECT device_id, temperature FROM table2;
+
+-- Equivalent to:
+SELECT device_id, temperature FROM table1
+INTERSECT DISTINCT
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       85.0|
+|      100|       null|
+|      100|       90.0|
+|      100|       85.0|
++---------+-----------+
+Total line number = 5
+It costs 0.087s
+```
+
+2. Get all common device and temperature records from `table1` and `table2` 
(including duplicates)
+```sql
+SELECT device_id, temperature FROM table1
+INTERSECT ALL
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      100|       85.0|
+|      100|       90.0|
+|      100|       null|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       90.0|
++---------+-----------+
+Total line number = 6
+It costs 0.139s
+```
+
+> **Notes**
+> - Set operations **do not guarantee result order**.
+> - When mixed with `UNION`/`EXCEPT`, use parentheses to explicitly specify 
precedence
+    >   (e.g., `A INTERSECT (B UNION C)`).
+
+
+## 3. EXCEPT
+### 3.1 Overview
+The EXCEPT operator returns rows that exist in the first result set but 
**not** in the second (order not guaranteed), supporting both duplicate 
elimination (default) and duplicate retention modes.
+
+### 3.2 Syntax
+```sql
+query1 EXCEPT [ALL | DISTINCT] query2
+```
+
+**Description**
+1. **Duplicate Handling**
+    - Default (`EXCEPT` or `EXCEPT DISTINCT`): Automatically removes duplicate 
rows.
+    - `EXCEPT ALL`: Preserves duplicate rows, with slightly lower performance.
+
+2. **Precedence Rules**
+    - `EXCEPT` has the same precedence as `UNION`, and lower precedence than 
`INTERSECT`
+      (e.g., `A INTERSECT B EXCEPT C` is equivalent to `(A INTERSECT B) EXCEPT 
C`).
+    - Evaluation is left-to-right
+      (e.g., `A EXCEPT B EXCEPT C` is equivalent to `(A EXCEPT B) EXCEPT C`).
+
+3. **Input Requirements**
+    - The two queries must return the same number of columns.
+    - Corresponding columns must have compatible data types (same rules as 
UNION).
+    - NULL values are treated as equal (`NULL IS NOT DISTINCT FROM NULL`).
+    - If the `time` column is not included in `SELECT`, it does not 
participate in comparison and will not appear in the result.
+
+4. **Result Set Rules**
+    - Column names and order are inherited from the first query.
+
+### 3.3 Examples
+Using the [sample data](../Reference/Sample-Data.md):
+
+1. Get distinct records from `table1` that do not exist in `table2`
+```sql
+SELECT device_id, temperature FROM table1
+EXCEPT
+SELECT device_id, temperature FROM table2;
+
+-- Equivalent to:
+SELECT device_id, temperature FROM table1
+EXCEPT DISTINCT
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       null|
+|      100|       88.0|
++---------+-----------+
+Total line number = 2
+It costs 0.173s
+```
+
+2. Get all records from `table1` that do not exist in `table2` (including 
duplicates)
+```sql
+SELECT device_id, temperature FROM table1
+EXCEPT ALL
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      100|       85.0|
+|      100|       88.0|
+|      100|       90.0|
+|      100|       90.0|
+|      100|       null|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       90.0|
+|      101|       null|
+|      101|       null|
+|      101|       null|
+|      101|       null|
++---------+-----------+
+Total line number = 12
+It costs 0.155s
+```
+
+> **Notes**
+> - Set operations **do not guarantee result order**.
+> - When mixed with `UNION`/`INTERSECT`, use parentheses to explicitly specify 
precedence
+    >   (e.g., `A EXCEPT (B INTERSECT C)`).
\ No newline at end of file
diff --git a/src/UserGuide/latest-Table/SQL-Manual/Set-Operations_timecho.md 
b/src/UserGuide/latest-Table/SQL-Manual/Set-Operations_timecho.md
new file mode 100644
index 00000000..3628b15e
--- /dev/null
+++ b/src/UserGuide/latest-Table/SQL-Manual/Set-Operations_timecho.md
@@ -0,0 +1,295 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+# Set Operations
+
+IoTDB natively supports standard SQL set operations, including three core 
operators: **UNION**, **INTERSECT**, and **EXCEPT**. These operations enable 
seamless merging, comparison, and filtering of query results from multiple 
time-series data sources, greatly improving the flexibility and efficiency of 
time-series data analysis.
+
+> Note: This feature is available since version 2.0.9.1.
+
+## 1. UNION
+### 1.1 Overview
+The UNION operator combines all rows from two result sets (order not 
guaranteed), supporting both duplicate elimination (default) and duplicate 
retention modes.
+
+### 1.2 Syntax
+```sql
+query UNION (ALL | DISTINCT) query
+```
+
+**Description**
+1. **Duplicate Handling**
+    - Default (`UNION` or `UNION DISTINCT`): Automatically removes duplicate 
rows.
+    - `UNION ALL`: Preserves all rows (including duplicates) with higher 
performance.
+
+2. **Input Requirements**
+    - The two queries must return the same number of columns.
+    - Corresponding columns must have compatible data types:
+        - Numeric compatibility: `INT32`, `INT64`, `FLOAT`, and `DOUBLE` are 
fully compatible with each other.
+        - String compatibility: `TEXT` and `STRING` are fully compatible.
+        - Special rule: `INT64` is compatible with `TIMESTAMP`.
+
+3. **Result Set Rules**
+    - Column names and order are inherited from the first query.
+
+### 1.3 Examples
+Using the [sample data](../Reference/Sample-Data.md):
+
+1. Get distinct non-null device and temperature records from `table1` and 
`table2`
+```sql
+SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
+UNION
+SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
+
+-- Equivalent to:
+SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
+UNION DISTINCT
+SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       88.0|
++---------+-----------+
+Total line number = 5
+It costs 0.074s
+```
+
+2. Get all non-null device and temperature records from `table1` and `table2` 
(including duplicates)
+```sql
+SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
+UNION ALL
+SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       85.0|
+|      100|       88.0|
+|      100|       90.0|
+|      100|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       85.0|
+|      100|       90.0|
++---------+-----------+
+Total line number = 17
+It costs 0.108s
+```
+
+> **Notes**
+> - Set operations **do not guarantee result order**; actual output may differ 
from examples.
+
+
+## 2. INTERSECT
+### 2.1 Overview
+The INTERSECT operator returns rows that exist in both result sets (order not 
guaranteed), supporting both duplicate elimination (default) and duplicate 
retention modes.
+
+### 2.2 Syntax
+```sql
+query1 INTERSECT [ALL | DISTINCT] query2
+```
+
+**Description**
+1. **Duplicate Handling**
+    - Default (`INTERSECT` or `INTERSECT DISTINCT`): Automatically removes 
duplicate rows.
+    - `INTERSECT ALL`: Preserves duplicate rows, with slightly lower 
performance.
+
+2. **Precedence Rules**
+    - `INTERSECT` has higher precedence than `UNION` and `EXCEPT`
+      (e.g., `A UNION B INTERSECT C` is equivalent to `A UNION (B INTERSECT 
C)`).
+    - Evaluation is left-to-right
+      (e.g., `A INTERSECT B INTERSECT C` is equivalent to `(A INTERSECT B) 
INTERSECT C`).
+
+3. **Input Requirements**
+    - The two queries must return the same number of columns.
+    - Corresponding columns must have compatible data types (same rules as 
UNION).
+    - NULL values are treated as equal (`NULL IS NOT DISTINCT FROM NULL`).
+    - If the `time` column is not included in `SELECT`, it does not 
participate in comparison and will not appear in the result.
+
+4. **Result Set Rules**
+    - Column names and order are inherited from the first query.
+
+### 2.3 Examples
+Using the [sample data](../Reference/Sample-Data.md):
+
+1. Get distinct common device and temperature records from `table1` and 
`table2`
+```sql
+SELECT device_id, temperature FROM table1
+INTERSECT
+SELECT device_id, temperature FROM table2;
+
+-- Equivalent to:
+SELECT device_id, temperature FROM table1
+INTERSECT DISTINCT
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       85.0|
+|      100|       null|
+|      100|       90.0|
+|      100|       85.0|
++---------+-----------+
+Total line number = 5
+It costs 0.087s
+```
+
+2. Get all common device and temperature records from `table1` and `table2` 
(including duplicates)
+```sql
+SELECT device_id, temperature FROM table1
+INTERSECT ALL
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      100|       85.0|
+|      100|       90.0|
+|      100|       null|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       90.0|
++---------+-----------+
+Total line number = 6
+It costs 0.139s
+```
+
+> **Notes**
+> - Set operations **do not guarantee result order**.
+> - When mixed with `UNION`/`EXCEPT`, use parentheses to explicitly specify 
precedence
+    >   (e.g., `A INTERSECT (B UNION C)`).
+
+
+## 3. EXCEPT
+### 3.1 Overview
+The EXCEPT operator returns rows that exist in the first result set but 
**not** in the second (order not guaranteed), supporting both duplicate 
elimination (default) and duplicate retention modes.
+
+### 3.2 Syntax
+```sql
+query1 EXCEPT [ALL | DISTINCT] query2
+```
+
+**Description**
+1. **Duplicate Handling**
+    - Default (`EXCEPT` or `EXCEPT DISTINCT`): Automatically removes duplicate 
rows.
+    - `EXCEPT ALL`: Preserves duplicate rows, with slightly lower performance.
+
+2. **Precedence Rules**
+    - `EXCEPT` has the same precedence as `UNION`, and lower precedence than 
`INTERSECT`
+      (e.g., `A INTERSECT B EXCEPT C` is equivalent to `(A INTERSECT B) EXCEPT 
C`).
+    - Evaluation is left-to-right
+      (e.g., `A EXCEPT B EXCEPT C` is equivalent to `(A EXCEPT B) EXCEPT C`).
+
+3. **Input Requirements**
+    - The two queries must return the same number of columns.
+    - Corresponding columns must have compatible data types (same rules as 
UNION).
+    - NULL values are treated as equal (`NULL IS NOT DISTINCT FROM NULL`).
+    - If the `time` column is not included in `SELECT`, it does not 
participate in comparison and will not appear in the result.
+
+4. **Result Set Rules**
+    - Column names and order are inherited from the first query.
+
+### 3.3 Examples
+Using the [sample data](../Reference/Sample-Data.md):
+
+1. Get distinct records from `table1` that do not exist in `table2`
+```sql
+SELECT device_id, temperature FROM table1
+EXCEPT
+SELECT device_id, temperature FROM table2;
+
+-- Equivalent to:
+SELECT device_id, temperature FROM table1
+EXCEPT DISTINCT
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       null|
+|      100|       88.0|
++---------+-----------+
+Total line number = 2
+It costs 0.173s
+```
+
+2. Get all records from `table1` that do not exist in `table2` (including 
duplicates)
+```sql
+SELECT device_id, temperature FROM table1
+EXCEPT ALL
+SELECT device_id, temperature FROM table2;
+```
+
+Result:
+```
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      100|       85.0|
+|      100|       88.0|
+|      100|       90.0|
+|      100|       90.0|
+|      100|       null|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       90.0|
+|      101|       null|
+|      101|       null|
+|      101|       null|
+|      101|       null|
++---------+-----------+
+Total line number = 12
+It costs 0.155s
+```
+
+> **Notes**
+> - Set operations **do not guarantee result order**.
+> - When mixed with `UNION`/`INTERSECT`, use parentheses to explicitly specify 
precedence
+    >   (e.g., `A EXCEPT (B INTERSECT C)`).
\ No newline at end of file
diff --git a/src/zh/UserGuide/Master/Table/SQL-Manual/Set-Operations_apache.md 
b/src/zh/UserGuide/Master/Table/SQL-Manual/Set-Operations_apache.md
new file mode 100644
index 00000000..dc7bc961
--- /dev/null
+++ b/src/zh/UserGuide/Master/Table/SQL-Manual/Set-Operations_apache.md
@@ -0,0 +1,322 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# 集合操作
+
+IoTDB 原生支持 SQL 标准集合操作,包括 
UNION(并集)、INTERSECT(交集)和EXCEPT(差集)三种核心运算符。通过执行这些操作,可实现无缝合并、比较和筛选多源时序数据查询结果,显著提升时序数据分析的灵活性与效率。
+
+> 注意:该功能从 V2.0.9-beta 版本开始提供。
+
+## 1. UNION
+### 1.1 概述
+
+UNION 操作将两个查询结果集的所有行合并(不保证结果顺序),支持去重(默认)和保留重复两种模式。
+
+### 1.2 语法定义
+
+```SQL
+query UNION (ALL | DISTINCT) query
+```
+
+**说明:**
+
+1. **去重规则:**
+
+    1. 默认(`UNION` 或 `UNION DISTINCT`):自动去除重复行。
+    2. `UNION ALL`:保留所有行(包括重复项),性能更高。
+2. **输入要求:**
+
+    1. 两个查询结果的列数必须相同。
+    2. 对应列数据类型需兼容,兼容性规则如下:
+        * 数值类型互容:`INT32`、`INT64`、`FLOAT`、`DOUBLE` 之间完全兼容。
+        * 字符串类型互容:`TEXT` 与 `STRING` 完全兼容。
+        * 特殊规则:`INT64` 与 `TIMESTAMP` 兼容。
+3. **结果集规则:**
+
+    1. 列名及顺序继承第一个查询的定义。
+
+### 1.3 使用示例
+
+以[示例数据](../Reference/Sample-Data.md)为原始数据。
+
+1. 获取 table1 和 table2 中设备及温度的非空数据集合(去重)
+
+```SQL
+select device_id,temperature from table1 where temperature is not null
+union 
+select device_id,temperature from table2 where temperature is not null;
+
+--等价于;
+select device_id,temperature from table1 where temperature is not null 
+union distinct
+select device_id,temperature from table2 where temperature is not null;
+```
+
+执行结果:
+
+```Bash
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       88.0|
++---------+-----------+
+Total line number = 5
+It costs 0.074s
+```
+
+2. 获取 table1 和 table2 中设备及温度的非空数据集合(保留重复)
+
+```SQL
+select device_id,temperature from table1 where temperature is not null 
+union all 
+select device_id,temperature from table2 where temperature is not null;
+```
+
+执行结果:
+
+```SQL
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       85.0|
+|      100|       88.0|
+|      100|       90.0|
+|      100|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       85.0|
+|      100|       90.0|
++---------+-----------+
+Total line number = 17
+It costs 0.108s
+```
+
+> ​**注意**​:
+>
+> * 集合操作​**不保证结果顺序**​,实际输出顺序可能与示例不同。
+
+## 2. INTERSECT
+### 2.1 概述
+
+INTERSECT 操作返回两个查询结果集中共同存在的行(不保证结果顺序),支持去重(默认)和保留重复两种模式。
+
+### 2.2 语法定义
+
+```SQL
+query1 INTERSECT [ALL | DISTINCT] query2
+```
+
+​**说明**​:
+
+1. ​**去重规则**​:
+
+    1. 默认(`INTERSECT` 或 `INTERSECT DISTINCT`):自动去除重复行。
+    2. `INTERSECT ALL`:保留所有重复行(包括重复项),性能略低。
+2. ​**优先级规则**​:
+
+    1. `INTERSECT` 优先级高于 `UNION` 和 `EXCEPT`(如 `A UNION B INTERSECT C` 等价于 `A 
UNION (B INTERSECT C)`)。
+    2. 从左到右计算(`A INTERSECT B INTERSECT C` 等价于 `(A INTERSECT B) INTERSECT C`)。
+3. ​**输入要求**​:
+
+    1. 两个查询结果的列数必须相同。
+    2. 对应列数据类型需兼容(兼容性规则同 UNION):
+        * 数值类型互容:`INT32`、`INT64`、`FLOAT`、`DOUBLE` 之间完全兼容。
+        * 字符串类型互容:`TEXT` 与 `STRING` 完全兼容。
+        * 特殊规则:`INT64` 与 `TIMESTAMP` 兼容。
+    3. NULL 值视为相等(`NULL IS NOT DISTINCT FROM NULL`)。
+    4. 若 `SELECT` 未包含 `time` 列,则 `time` 列不参与比较,结果集无 `time` 列。
+4. ​**结果集规则**​:
+
+    1. 列名及顺序继承第一个查询的定义。
+
+### 2.3 使用示例
+
+基于 [示例数据](../Reference/Sample-Data.md):
+
+1. 获取 table1 和 table2 中设备及温度的共同数据(去重)
+
+   ```SQL
+   select device_id, temperature from table1 
+   intersect
+   select device_id, temperature from table2;
+   
+   --等价于;
+   select device_id, temperature from table1
+   intersect distinct
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      101|       90.0|
+   |      101|       85.0|
+   |      100|       null|
+   |      100|       90.0|
+   |      100|       85.0|
+   +---------+-----------+
+   Total line number = 5
+   It costs 0.087s
+   ```
+2. 获取 table1 和 table2 中设备及温度的共同数据(保留重复)
+
+   ```SQL
+   select device_id, temperature from table1 
+   intersect all
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      100|       85.0|
+   |      100|       90.0|
+   |      100|       null|
+   |      101|       85.0|
+   |      101|       85.0|
+   |      101|       90.0|
+   +---------+-----------+
+   Total line number = 6
+   It costs 0.139s
+   ```
+
+> ​**注意**​:
+>
+> * 集合操作​**不保证结果顺序**​,实际输出顺序可能与示例不同。
+> * 与 `UNION`/`EXCEPT` 混合使用时,需通过括号明确优先级(如 `A INTERSECT (B UNION C)`)。
+
+## 3. EXCEPT
+### 3.1 概述
+
+EXCEPT 操作返回第一个查询结果集存在但第二个查询结果集中不存在的行(不保证结果顺序),支持去重(默认)和保留重复两种模式。
+
+### 3.2 语法定义
+
+```SQL
+query1 EXCEPT [ALL | DISTINCT] query2
+```
+
+​**说明**​:
+
+1. ​**去重规则**​:
+
+    1. 默认(`EXCEPT` 或 `EXCEPT DISTINCT`):自动去除重复行。
+    2. `EXCEPT ALL`:保留所有重复行(包括重复项),性能略低。
+2. ​**优先级规则**​:
+
+    1. `EXCEPT` 与 `UNION` 优先级相同,低于 `INTERSECT`(如 `A INTERSECT B EXCEPT C` 等价于 
`(A INTERSECT B) EXCEPT C`)。
+    2. 从左到右计算(`A EXCEPT B EXCEPT C` 等价于 `(A EXCEPT B) EXCEPT C`)。
+3. ​**输入要求**​:
+
+    1. 两个查询结果的列数必须相同。
+    2. 对应列数据类型需兼容(兼容性规则同 UNION):
+        * 数值类型互容:`INT32`、`INT64`、`FLOAT`、`DOUBLE` 之间完全兼容。
+        * 字符串类型互容:`TEXT` 与 `STRING` 完全兼容。
+        * 特殊规则:`INT64` 与 `TIMESTAMP` 兼容。
+    3. NULL 值视为相等(`NULL IS NOT DISTINCT FROM NULL`)。
+    4. 若 `SELECT` 未包含 `time` 列,则 `time` 列不参与比较,结果集无 `time` 列。
+4. ​**结果集规则**​:
+
+    1. 列名及顺序继承第一个查询的定义。
+
+### 3.3 使用示例
+
+基于 [示例数据](../Reference/Sample-Data.md):
+
+1. 获取 table1 中存在但 table2 中不存在的设备及温度数据(去重)
+
+   ```SQL
+   select device_id, temperature from table1 
+   except
+   select device_id, temperature from table2;
+   
+   --等价于;
+   select device_id, temperature from table1 
+   except distinct
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      101|       null|
+   |      100|       88.0|
+   +---------+-----------+
+   Total line number = 2
+   It costs 0.173s
+   ```
+2. 获取 table1 中存在但 table2 中不存在的设备及温度数据(保留重复)
+
+   ```SQL
+   select device_id, temperature from table1
+   except all
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      100|       85.0|
+   |      100|       88.0|
+   |      100|       90.0|
+   |      100|       90.0|
+   |      100|       null|
+   |      101|       85.0|
+   |      101|       85.0|
+   |      101|       90.0|
+   |      101|       null|
+   |      101|       null|
+   |      101|       null|
+   |      101|       null|
+   +---------+-----------+
+   Total line number = 12
+   It costs 0.155s
+   ```
+
+> ​**注意**​:
+>
+> * 集合操作​**不保证结果顺序**​,实际输出顺序可能与示例不同。
+> * 与 `UNION`/`INTERSECT` 混合使用时,需通过括号明确优先级(如 `A EXCEPT (B INTERSECT C)`)。
diff --git a/src/zh/UserGuide/Master/Table/SQL-Manual/Set-Operations_timecho.md 
b/src/zh/UserGuide/Master/Table/SQL-Manual/Set-Operations_timecho.md
new file mode 100644
index 00000000..07d8ff1f
--- /dev/null
+++ b/src/zh/UserGuide/Master/Table/SQL-Manual/Set-Operations_timecho.md
@@ -0,0 +1,322 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# 集合操作
+
+IoTDB 原生支持 SQL 标准集合操作,包括 
UNION(并集)、INTERSECT(交集)和EXCEPT(差集)三种核心运算符。通过执行这些操作,可实现无缝合并、比较和筛选多源时序数据查询结果,显著提升时序数据分析的灵活性与效率。
+
+> 注意:该功能从 V2.0.9.1 版本开始提供。
+
+## 1. UNION
+### 1.1 概述
+
+UNION 操作将两个查询结果集的所有行合并(不保证结果顺序),支持去重(默认)和保留重复两种模式。
+
+### 1.2 语法定义
+
+```SQL
+query UNION (ALL | DISTINCT) query
+```
+
+**说明:**
+
+1. **去重规则:**
+
+    1. 默认(`UNION` 或 `UNION DISTINCT`):自动去除重复行。
+    2. `UNION ALL`:保留所有行(包括重复项),性能更高。
+2. **输入要求:**
+
+    1. 两个查询结果的列数必须相同。
+    2. 对应列数据类型需兼容,兼容性规则如下:
+        * 数值类型互容:`INT32`、`INT64`、`FLOAT`、`DOUBLE` 之间完全兼容。
+        * 字符串类型互容:`TEXT` 与 `STRING` 完全兼容。
+        * 特殊规则:`INT64` 与 `TIMESTAMP` 兼容。
+3. **结果集规则:**
+
+    1. 列名及顺序继承第一个查询的定义。
+
+### 1.3 使用示例
+
+以[示例数据](../Reference/Sample-Data.md)为原始数据。
+
+1. 获取 table1 和 table2 中设备及温度的非空数据集合(去重)
+
+```SQL
+select device_id,temperature from table1 where temperature is not null
+union 
+select device_id,temperature from table2 where temperature is not null;
+
+--等价于;
+select device_id,temperature from table1 where temperature is not null 
+union distinct
+select device_id,temperature from table2 where temperature is not null;
+```
+
+执行结果:
+
+```Bash
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       88.0|
++---------+-----------+
+Total line number = 5
+It costs 0.074s
+```
+
+2. 获取 table1 和 table2 中设备及温度的非空数据集合(保留重复)
+
+```SQL
+select device_id,temperature from table1 where temperature is not null 
+union all 
+select device_id,temperature from table2 where temperature is not null;
+```
+
+执行结果:
+
+```SQL
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       85.0|
+|      100|       88.0|
+|      100|       90.0|
+|      100|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       85.0|
+|      100|       90.0|
++---------+-----------+
+Total line number = 17
+It costs 0.108s
+```
+
+> ​**注意**​:
+>
+> * 集合操作​**不保证结果顺序**​,实际输出顺序可能与示例不同。
+
+## 2. INTERSECT
+### 2.1 概述
+
+INTERSECT 操作返回两个查询结果集中共同存在的行(不保证结果顺序),支持去重(默认)和保留重复两种模式。
+
+### 2.2 语法定义
+
+```SQL
+query1 INTERSECT [ALL | DISTINCT] query2
+```
+
+​**说明**​:
+
+1. ​**去重规则**​:
+
+    1. 默认(`INTERSECT` 或 `INTERSECT DISTINCT`):自动去除重复行。
+    2. `INTERSECT ALL`:保留所有重复行(包括重复项),性能略低。
+2. ​**优先级规则**​:
+
+    1. `INTERSECT` 优先级高于 `UNION` 和 `EXCEPT`(如 `A UNION B INTERSECT C` 等价于 `A 
UNION (B INTERSECT C)`)。
+    2. 从左到右计算(`A INTERSECT B INTERSECT C` 等价于 `(A INTERSECT B) INTERSECT C`)。
+3. ​**输入要求**​:
+
+    1. 两个查询结果的列数必须相同。
+    2. 对应列数据类型需兼容(兼容性规则同 UNION):
+        * 数值类型互容:`INT32`、`INT64`、`FLOAT`、`DOUBLE` 之间完全兼容。
+        * 字符串类型互容:`TEXT` 与 `STRING` 完全兼容。
+        * 特殊规则:`INT64` 与 `TIMESTAMP` 兼容。
+    3. NULL 值视为相等(`NULL IS NOT DISTINCT FROM NULL`)。
+    4. 若 `SELECT` 未包含 `time` 列,则 `time` 列不参与比较,结果集无 `time` 列。
+4. ​**结果集规则**​:
+
+    1. 列名及顺序继承第一个查询的定义。
+
+### 2.3 使用示例
+
+基于 [示例数据](../Reference/Sample-Data.md):
+
+1. 获取 table1 和 table2 中设备及温度的共同数据(去重)
+
+   ```SQL
+   select device_id, temperature from table1 
+   intersect
+   select device_id, temperature from table2;
+   
+   --等价于;
+   select device_id, temperature from table1
+   intersect distinct
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      101|       90.0|
+   |      101|       85.0|
+   |      100|       null|
+   |      100|       90.0|
+   |      100|       85.0|
+   +---------+-----------+
+   Total line number = 5
+   It costs 0.087s
+   ```
+2. 获取 table1 和 table2 中设备及温度的共同数据(保留重复)
+
+   ```SQL
+   select device_id, temperature from table1 
+   intersect all
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      100|       85.0|
+   |      100|       90.0|
+   |      100|       null|
+   |      101|       85.0|
+   |      101|       85.0|
+   |      101|       90.0|
+   +---------+-----------+
+   Total line number = 6
+   It costs 0.139s
+   ```
+
+> ​**注意**​:
+>
+> * 集合操作​**不保证结果顺序**​,实际输出顺序可能与示例不同。
+> * 与 `UNION`/`EXCEPT` 混合使用时,需通过括号明确优先级(如 `A INTERSECT (B UNION C)`)。
+
+## 3. EXCEPT
+### 3.1 概述
+
+EXCEPT 操作返回第一个查询结果集存在但第二个查询结果集中不存在的行(不保证结果顺序),支持去重(默认)和保留重复两种模式。
+
+### 3.2 语法定义
+
+```SQL
+query1 EXCEPT [ALL | DISTINCT] query2
+```
+
+​**说明**​:
+
+1. ​**去重规则**​:
+
+    1. 默认(`EXCEPT` 或 `EXCEPT DISTINCT`):自动去除重复行。
+    2. `EXCEPT ALL`:保留所有重复行(包括重复项),性能略低。
+2. ​**优先级规则**​:
+
+    1. `EXCEPT` 与 `UNION` 优先级相同,低于 `INTERSECT`(如 `A INTERSECT B EXCEPT C` 等价于 
`(A INTERSECT B) EXCEPT C`)。
+    2. 从左到右计算(`A EXCEPT B EXCEPT C` 等价于 `(A EXCEPT B) EXCEPT C`)。
+3. ​**输入要求**​:
+
+    1. 两个查询结果的列数必须相同。
+    2. 对应列数据类型需兼容(兼容性规则同 UNION):
+        * 数值类型互容:`INT32`、`INT64`、`FLOAT`、`DOUBLE` 之间完全兼容。
+        * 字符串类型互容:`TEXT` 与 `STRING` 完全兼容。
+        * 特殊规则:`INT64` 与 `TIMESTAMP` 兼容。
+    3. NULL 值视为相等(`NULL IS NOT DISTINCT FROM NULL`)。
+    4. 若 `SELECT` 未包含 `time` 列,则 `time` 列不参与比较,结果集无 `time` 列。
+4. ​**结果集规则**​:
+
+    1. 列名及顺序继承第一个查询的定义。
+
+### 3.3 使用示例
+
+基于 [示例数据](../Reference/Sample-Data.md):
+
+1. 获取 table1 中存在但 table2 中不存在的设备及温度数据(去重)
+
+   ```SQL
+   select device_id, temperature from table1 
+   except
+   select device_id, temperature from table2;
+   
+   --等价于;
+   select device_id, temperature from table1 
+   except distinct
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      101|       null|
+   |      100|       88.0|
+   +---------+-----------+
+   Total line number = 2
+   It costs 0.173s
+   ```
+2. 获取 table1 中存在但 table2 中不存在的设备及温度数据(保留重复)
+
+   ```SQL
+   select device_id, temperature from table1
+   except all
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      100|       85.0|
+   |      100|       88.0|
+   |      100|       90.0|
+   |      100|       90.0|
+   |      100|       null|
+   |      101|       85.0|
+   |      101|       85.0|
+   |      101|       90.0|
+   |      101|       null|
+   |      101|       null|
+   |      101|       null|
+   |      101|       null|
+   +---------+-----------+
+   Total line number = 12
+   It costs 0.155s
+   ```
+
+> ​**注意**​:
+>
+> * 集合操作​**不保证结果顺序**​,实际输出顺序可能与示例不同。
+> * 与 `UNION`/`INTERSECT` 混合使用时,需通过括号明确优先级(如 `A EXCEPT (B INTERSECT C)`)。
diff --git a/src/zh/UserGuide/latest-Table/SQL-Manual/Set-Operations_apache.md 
b/src/zh/UserGuide/latest-Table/SQL-Manual/Set-Operations_apache.md
new file mode 100644
index 00000000..dc7bc961
--- /dev/null
+++ b/src/zh/UserGuide/latest-Table/SQL-Manual/Set-Operations_apache.md
@@ -0,0 +1,322 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# 集合操作
+
+IoTDB 原生支持 SQL 标准集合操作,包括 
UNION(并集)、INTERSECT(交集)和EXCEPT(差集)三种核心运算符。通过执行这些操作,可实现无缝合并、比较和筛选多源时序数据查询结果,显著提升时序数据分析的灵活性与效率。
+
+> 注意:该功能从 V2.0.9-beta 版本开始提供。
+
+## 1. UNION
+### 1.1 概述
+
+UNION 操作将两个查询结果集的所有行合并(不保证结果顺序),支持去重(默认)和保留重复两种模式。
+
+### 1.2 语法定义
+
+```SQL
+query UNION (ALL | DISTINCT) query
+```
+
+**说明:**
+
+1. **去重规则:**
+
+    1. 默认(`UNION` 或 `UNION DISTINCT`):自动去除重复行。
+    2. `UNION ALL`:保留所有行(包括重复项),性能更高。
+2. **输入要求:**
+
+    1. 两个查询结果的列数必须相同。
+    2. 对应列数据类型需兼容,兼容性规则如下:
+        * 数值类型互容:`INT32`、`INT64`、`FLOAT`、`DOUBLE` 之间完全兼容。
+        * 字符串类型互容:`TEXT` 与 `STRING` 完全兼容。
+        * 特殊规则:`INT64` 与 `TIMESTAMP` 兼容。
+3. **结果集规则:**
+
+    1. 列名及顺序继承第一个查询的定义。
+
+### 1.3 使用示例
+
+以[示例数据](../Reference/Sample-Data.md)为原始数据。
+
+1. 获取 table1 和 table2 中设备及温度的非空数据集合(去重)
+
+```SQL
+select device_id,temperature from table1 where temperature is not null
+union 
+select device_id,temperature from table2 where temperature is not null;
+
+--等价于;
+select device_id,temperature from table1 where temperature is not null 
+union distinct
+select device_id,temperature from table2 where temperature is not null;
+```
+
+执行结果:
+
+```Bash
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       88.0|
++---------+-----------+
+Total line number = 5
+It costs 0.074s
+```
+
+2. 获取 table1 和 table2 中设备及温度的非空数据集合(保留重复)
+
+```SQL
+select device_id,temperature from table1 where temperature is not null 
+union all 
+select device_id,temperature from table2 where temperature is not null;
+```
+
+执行结果:
+
+```SQL
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       85.0|
+|      100|       88.0|
+|      100|       90.0|
+|      100|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       85.0|
+|      100|       90.0|
++---------+-----------+
+Total line number = 17
+It costs 0.108s
+```
+
+> ​**注意**​:
+>
+> * 集合操作​**不保证结果顺序**​,实际输出顺序可能与示例不同。
+
+## 2. INTERSECT
+### 2.1 概述
+
+INTERSECT 操作返回两个查询结果集中共同存在的行(不保证结果顺序),支持去重(默认)和保留重复两种模式。
+
+### 2.2 语法定义
+
+```SQL
+query1 INTERSECT [ALL | DISTINCT] query2
+```
+
+​**说明**​:
+
+1. ​**去重规则**​:
+
+    1. 默认(`INTERSECT` 或 `INTERSECT DISTINCT`):自动去除重复行。
+    2. `INTERSECT ALL`:保留所有重复行(包括重复项),性能略低。
+2. ​**优先级规则**​:
+
+    1. `INTERSECT` 优先级高于 `UNION` 和 `EXCEPT`(如 `A UNION B INTERSECT C` 等价于 `A 
UNION (B INTERSECT C)`)。
+    2. 从左到右计算(`A INTERSECT B INTERSECT C` 等价于 `(A INTERSECT B) INTERSECT C`)。
+3. ​**输入要求**​:
+
+    1. 两个查询结果的列数必须相同。
+    2. 对应列数据类型需兼容(兼容性规则同 UNION):
+        * 数值类型互容:`INT32`、`INT64`、`FLOAT`、`DOUBLE` 之间完全兼容。
+        * 字符串类型互容:`TEXT` 与 `STRING` 完全兼容。
+        * 特殊规则:`INT64` 与 `TIMESTAMP` 兼容。
+    3. NULL 值视为相等(`NULL IS NOT DISTINCT FROM NULL`)。
+    4. 若 `SELECT` 未包含 `time` 列,则 `time` 列不参与比较,结果集无 `time` 列。
+4. ​**结果集规则**​:
+
+    1. 列名及顺序继承第一个查询的定义。
+
+### 2.3 使用示例
+
+基于 [示例数据](../Reference/Sample-Data.md):
+
+1. 获取 table1 和 table2 中设备及温度的共同数据(去重)
+
+   ```SQL
+   select device_id, temperature from table1 
+   intersect
+   select device_id, temperature from table2;
+   
+   --等价于;
+   select device_id, temperature from table1
+   intersect distinct
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      101|       90.0|
+   |      101|       85.0|
+   |      100|       null|
+   |      100|       90.0|
+   |      100|       85.0|
+   +---------+-----------+
+   Total line number = 5
+   It costs 0.087s
+   ```
+2. 获取 table1 和 table2 中设备及温度的共同数据(保留重复)
+
+   ```SQL
+   select device_id, temperature from table1 
+   intersect all
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      100|       85.0|
+   |      100|       90.0|
+   |      100|       null|
+   |      101|       85.0|
+   |      101|       85.0|
+   |      101|       90.0|
+   +---------+-----------+
+   Total line number = 6
+   It costs 0.139s
+   ```
+
+> ​**注意**​:
+>
+> * 集合操作​**不保证结果顺序**​,实际输出顺序可能与示例不同。
+> * 与 `UNION`/`EXCEPT` 混合使用时,需通过括号明确优先级(如 `A INTERSECT (B UNION C)`)。
+
+## 3. EXCEPT
+### 3.1 概述
+
+EXCEPT 操作返回第一个查询结果集存在但第二个查询结果集中不存在的行(不保证结果顺序),支持去重(默认)和保留重复两种模式。
+
+### 3.2 语法定义
+
+```SQL
+query1 EXCEPT [ALL | DISTINCT] query2
+```
+
+​**说明**​:
+
+1. ​**去重规则**​:
+
+    1. 默认(`EXCEPT` 或 `EXCEPT DISTINCT`):自动去除重复行。
+    2. `EXCEPT ALL`:保留所有重复行(包括重复项),性能略低。
+2. ​**优先级规则**​:
+
+    1. `EXCEPT` 与 `UNION` 优先级相同,低于 `INTERSECT`(如 `A INTERSECT B EXCEPT C` 等价于 
`(A INTERSECT B) EXCEPT C`)。
+    2. 从左到右计算(`A EXCEPT B EXCEPT C` 等价于 `(A EXCEPT B) EXCEPT C`)。
+3. ​**输入要求**​:
+
+    1. 两个查询结果的列数必须相同。
+    2. 对应列数据类型需兼容(兼容性规则同 UNION):
+        * 数值类型互容:`INT32`、`INT64`、`FLOAT`、`DOUBLE` 之间完全兼容。
+        * 字符串类型互容:`TEXT` 与 `STRING` 完全兼容。
+        * 特殊规则:`INT64` 与 `TIMESTAMP` 兼容。
+    3. NULL 值视为相等(`NULL IS NOT DISTINCT FROM NULL`)。
+    4. 若 `SELECT` 未包含 `time` 列,则 `time` 列不参与比较,结果集无 `time` 列。
+4. ​**结果集规则**​:
+
+    1. 列名及顺序继承第一个查询的定义。
+
+### 3.3 使用示例
+
+基于 [示例数据](../Reference/Sample-Data.md):
+
+1. 获取 table1 中存在但 table2 中不存在的设备及温度数据(去重)
+
+   ```SQL
+   select device_id, temperature from table1 
+   except
+   select device_id, temperature from table2;
+   
+   --等价于;
+   select device_id, temperature from table1 
+   except distinct
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      101|       null|
+   |      100|       88.0|
+   +---------+-----------+
+   Total line number = 2
+   It costs 0.173s
+   ```
+2. 获取 table1 中存在但 table2 中不存在的设备及温度数据(保留重复)
+
+   ```SQL
+   select device_id, temperature from table1
+   except all
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      100|       85.0|
+   |      100|       88.0|
+   |      100|       90.0|
+   |      100|       90.0|
+   |      100|       null|
+   |      101|       85.0|
+   |      101|       85.0|
+   |      101|       90.0|
+   |      101|       null|
+   |      101|       null|
+   |      101|       null|
+   |      101|       null|
+   +---------+-----------+
+   Total line number = 12
+   It costs 0.155s
+   ```
+
+> ​**注意**​:
+>
+> * 集合操作​**不保证结果顺序**​,实际输出顺序可能与示例不同。
+> * 与 `UNION`/`INTERSECT` 混合使用时,需通过括号明确优先级(如 `A EXCEPT (B INTERSECT C)`)。
diff --git a/src/zh/UserGuide/latest-Table/SQL-Manual/Set-Operations_timecho.md 
b/src/zh/UserGuide/latest-Table/SQL-Manual/Set-Operations_timecho.md
new file mode 100644
index 00000000..07d8ff1f
--- /dev/null
+++ b/src/zh/UserGuide/latest-Table/SQL-Manual/Set-Operations_timecho.md
@@ -0,0 +1,322 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# 集合操作
+
+IoTDB 原生支持 SQL 标准集合操作,包括 
UNION(并集)、INTERSECT(交集)和EXCEPT(差集)三种核心运算符。通过执行这些操作,可实现无缝合并、比较和筛选多源时序数据查询结果,显著提升时序数据分析的灵活性与效率。
+
+> 注意:该功能从 V2.0.9.1 版本开始提供。
+
+## 1. UNION
+### 1.1 概述
+
+UNION 操作将两个查询结果集的所有行合并(不保证结果顺序),支持去重(默认)和保留重复两种模式。
+
+### 1.2 语法定义
+
+```SQL
+query UNION (ALL | DISTINCT) query
+```
+
+**说明:**
+
+1. **去重规则:**
+
+    1. 默认(`UNION` 或 `UNION DISTINCT`):自动去除重复行。
+    2. `UNION ALL`:保留所有行(包括重复项),性能更高。
+2. **输入要求:**
+
+    1. 两个查询结果的列数必须相同。
+    2. 对应列数据类型需兼容,兼容性规则如下:
+        * 数值类型互容:`INT32`、`INT64`、`FLOAT`、`DOUBLE` 之间完全兼容。
+        * 字符串类型互容:`TEXT` 与 `STRING` 完全兼容。
+        * 特殊规则:`INT64` 与 `TIMESTAMP` 兼容。
+3. **结果集规则:**
+
+    1. 列名及顺序继承第一个查询的定义。
+
+### 1.3 使用示例
+
+以[示例数据](../Reference/Sample-Data.md)为原始数据。
+
+1. 获取 table1 和 table2 中设备及温度的非空数据集合(去重)
+
+```SQL
+select device_id,temperature from table1 where temperature is not null
+union 
+select device_id,temperature from table2 where temperature is not null;
+
+--等价于;
+select device_id,temperature from table1 where temperature is not null 
+union distinct
+select device_id,temperature from table2 where temperature is not null;
+```
+
+执行结果:
+
+```Bash
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       88.0|
++---------+-----------+
+Total line number = 5
+It costs 0.074s
+```
+
+2. 获取 table1 和 table2 中设备及温度的非空数据集合(保留重复)
+
+```SQL
+select device_id,temperature from table1 where temperature is not null 
+union all 
+select device_id,temperature from table2 where temperature is not null;
+```
+
+执行结果:
+
+```SQL
++---------+-----------+
+|device_id|temperature|
++---------+-----------+
+|      101|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       90.0|
+|      100|       85.0|
+|      100|       85.0|
+|      100|       88.0|
+|      100|       90.0|
+|      100|       90.0|
+|      101|       90.0|
+|      101|       85.0|
+|      101|       85.0|
+|      100|       85.0|
+|      100|       90.0|
++---------+-----------+
+Total line number = 17
+It costs 0.108s
+```
+
+> ​**注意**​:
+>
+> * 集合操作​**不保证结果顺序**​,实际输出顺序可能与示例不同。
+
+## 2. INTERSECT
+### 2.1 概述
+
+INTERSECT 操作返回两个查询结果集中共同存在的行(不保证结果顺序),支持去重(默认)和保留重复两种模式。
+
+### 2.2 语法定义
+
+```SQL
+query1 INTERSECT [ALL | DISTINCT] query2
+```
+
+​**说明**​:
+
+1. ​**去重规则**​:
+
+    1. 默认(`INTERSECT` 或 `INTERSECT DISTINCT`):自动去除重复行。
+    2. `INTERSECT ALL`:保留所有重复行(包括重复项),性能略低。
+2. ​**优先级规则**​:
+
+    1. `INTERSECT` 优先级高于 `UNION` 和 `EXCEPT`(如 `A UNION B INTERSECT C` 等价于 `A 
UNION (B INTERSECT C)`)。
+    2. 从左到右计算(`A INTERSECT B INTERSECT C` 等价于 `(A INTERSECT B) INTERSECT C`)。
+3. ​**输入要求**​:
+
+    1. 两个查询结果的列数必须相同。
+    2. 对应列数据类型需兼容(兼容性规则同 UNION):
+        * 数值类型互容:`INT32`、`INT64`、`FLOAT`、`DOUBLE` 之间完全兼容。
+        * 字符串类型互容:`TEXT` 与 `STRING` 完全兼容。
+        * 特殊规则:`INT64` 与 `TIMESTAMP` 兼容。
+    3. NULL 值视为相等(`NULL IS NOT DISTINCT FROM NULL`)。
+    4. 若 `SELECT` 未包含 `time` 列,则 `time` 列不参与比较,结果集无 `time` 列。
+4. ​**结果集规则**​:
+
+    1. 列名及顺序继承第一个查询的定义。
+
+### 2.3 使用示例
+
+基于 [示例数据](../Reference/Sample-Data.md):
+
+1. 获取 table1 和 table2 中设备及温度的共同数据(去重)
+
+   ```SQL
+   select device_id, temperature from table1 
+   intersect
+   select device_id, temperature from table2;
+   
+   --等价于;
+   select device_id, temperature from table1
+   intersect distinct
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      101|       90.0|
+   |      101|       85.0|
+   |      100|       null|
+   |      100|       90.0|
+   |      100|       85.0|
+   +---------+-----------+
+   Total line number = 5
+   It costs 0.087s
+   ```
+2. 获取 table1 和 table2 中设备及温度的共同数据(保留重复)
+
+   ```SQL
+   select device_id, temperature from table1 
+   intersect all
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      100|       85.0|
+   |      100|       90.0|
+   |      100|       null|
+   |      101|       85.0|
+   |      101|       85.0|
+   |      101|       90.0|
+   +---------+-----------+
+   Total line number = 6
+   It costs 0.139s
+   ```
+
+> ​**注意**​:
+>
+> * 集合操作​**不保证结果顺序**​,实际输出顺序可能与示例不同。
+> * 与 `UNION`/`EXCEPT` 混合使用时,需通过括号明确优先级(如 `A INTERSECT (B UNION C)`)。
+
+## 3. EXCEPT
+### 3.1 概述
+
+EXCEPT 操作返回第一个查询结果集存在但第二个查询结果集中不存在的行(不保证结果顺序),支持去重(默认)和保留重复两种模式。
+
+### 3.2 语法定义
+
+```SQL
+query1 EXCEPT [ALL | DISTINCT] query2
+```
+
+​**说明**​:
+
+1. ​**去重规则**​:
+
+    1. 默认(`EXCEPT` 或 `EXCEPT DISTINCT`):自动去除重复行。
+    2. `EXCEPT ALL`:保留所有重复行(包括重复项),性能略低。
+2. ​**优先级规则**​:
+
+    1. `EXCEPT` 与 `UNION` 优先级相同,低于 `INTERSECT`(如 `A INTERSECT B EXCEPT C` 等价于 
`(A INTERSECT B) EXCEPT C`)。
+    2. 从左到右计算(`A EXCEPT B EXCEPT C` 等价于 `(A EXCEPT B) EXCEPT C`)。
+3. ​**输入要求**​:
+
+    1. 两个查询结果的列数必须相同。
+    2. 对应列数据类型需兼容(兼容性规则同 UNION):
+        * 数值类型互容:`INT32`、`INT64`、`FLOAT`、`DOUBLE` 之间完全兼容。
+        * 字符串类型互容:`TEXT` 与 `STRING` 完全兼容。
+        * 特殊规则:`INT64` 与 `TIMESTAMP` 兼容。
+    3. NULL 值视为相等(`NULL IS NOT DISTINCT FROM NULL`)。
+    4. 若 `SELECT` 未包含 `time` 列,则 `time` 列不参与比较,结果集无 `time` 列。
+4. ​**结果集规则**​:
+
+    1. 列名及顺序继承第一个查询的定义。
+
+### 3.3 使用示例
+
+基于 [示例数据](../Reference/Sample-Data.md):
+
+1. 获取 table1 中存在但 table2 中不存在的设备及温度数据(去重)
+
+   ```SQL
+   select device_id, temperature from table1 
+   except
+   select device_id, temperature from table2;
+   
+   --等价于;
+   select device_id, temperature from table1 
+   except distinct
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      101|       null|
+   |      100|       88.0|
+   +---------+-----------+
+   Total line number = 2
+   It costs 0.173s
+   ```
+2. 获取 table1 中存在但 table2 中不存在的设备及温度数据(保留重复)
+
+   ```SQL
+   select device_id, temperature from table1
+   except all
+   select device_id, temperature from table2;
+   ```
+
+   执行结果:
+
+   ```Bash
+   +---------+-----------+
+   |device_id|temperature|
+   +---------+-----------+
+   |      100|       85.0|
+   |      100|       88.0|
+   |      100|       90.0|
+   |      100|       90.0|
+   |      100|       null|
+   |      101|       85.0|
+   |      101|       85.0|
+   |      101|       90.0|
+   |      101|       null|
+   |      101|       null|
+   |      101|       null|
+   |      101|       null|
+   +---------+-----------+
+   Total line number = 12
+   It costs 0.155s
+   ```
+
+> ​**注意**​:
+>
+> * 集合操作​**不保证结果顺序**​,实际输出顺序可能与示例不同。
+> * 与 `UNION`/`INTERSECT` 混合使用时,需通过括号明确优先级(如 `A EXCEPT (B INTERSECT C)`)。

Reply via email to