数据库union
时间: 2025-05-16 07:49:41 浏览: 22
### 数据库 UNION 的使用方法及示例
#### 什么是 UNION?
`UNION` 是 SQL 中的一个操作符,用于将多个 `SELECT` 查询的结果集合并成一个单一的结果集。需要注意的是,`UNION` 默认会去除重复的行[^5]。
#### 基本语法
以下是 `UNION` 的基本语法:
```sql
SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;
```
每个参与 `UNION` 的查询必须具有相同的列数以及兼容的数据类型[^4]。
#### 示例:结合两个表中的数据
假设我们有两个表 `employees` 和 `contractors`,它们都包含类似的字段 `id`, `name`, 和 `salary`:
```sql
SELECT id, name, salary FROM employees
UNION
SELECT id, name, salary FROM contractors;
```
此查询将返回来自 `employees` 表和 `contractors` 表的所有唯一记录。
#### 处理重复项
如果希望保留所有的重复行,则可以改用 `UNION ALL` 而不是 `UNION`。例如:
```sql
SELECT id, name, salary FROM employees
UNION ALL
SELECT id, name, salary FROM contractors;
```
这里不会移除任何重复的行。
#### 字段数量不一致时的问题及其解决方案
当尝试使用 `UNION` 或 `UNION ALL` 合并不同的查询结果时,可能会遇到字段数量不匹配的情况。这种情况下会出现类似于 “each UNION query must have the same number of columns” 的错误消息[^3]。要解决这个问题,需确保所有子查询返回相同数量的列,并且这些列的数据类型也应相容。
#### GaussDB 特定注意事项
对于某些特定数据库如 GaussDB,在应用 `UNION` 操作时同样遵循上述原则——即各部分查询所涉及的字段数目应当完全吻合;否则就会触发相应的报错机制。
#### Java Web 应用程序中通过 JDBC 执行 UNION 查询
在基于 Java 的应用程序开发过程中,可以通过 JDBC 来执行复杂的 SQL 查询,其中包括带有 `UNION` 子句的操作。下面是一个简单的例子展示如何利用 JDBC 实现这一点[^2]:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class UnionExample {
public static void main(String[] args) throws Exception {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "");
Statement stmt = conn.createStatement();
String sqlQuery = "SELECT id, name FROM employees "
+ "UNION SELECT id, name FROM contractors";
ResultSet rs = stmt.executeQuery(sqlQuery);
while(rs.next()) {
System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name"));
}
rs.close();
stmt.close();
conn.close();
}
}
```
阅读全文
相关推荐















