跳转到主内容
极星编程网:以代码为星,赴技术山海!

SQL中UNION与UNION ALL的区别小结

目录

1. UNION

2. UNION ALL示例代码总结在 SQL 中,UNION和UNION ALL都用于将两个或多个结果集合并为一个结果集,但它们在处理重复数据方面有显著区别。以下是它们的详细区别:

1. UNION

UNION操作符用于合并两个或多个 SELECT 语句的结果集,并自动去除结果集中重复的行。

SELECT column1, column2 FROM table1 UNION SELECT column1, column2 FROM table2;去重:UNION自动去除重复的行,只返回唯一的行。

性能: 由于需要进行去重操作,UNION的性能相对较低,尤其是在大数据集上。

用途: 当需要合并结果集并且不希望结果集中包含重复的行时使用。

2. UNION ALLUNION ALL操作符用于合并两个或多个 SELECT 语句的结果集,不去除重复的行,返回所有结果,包括重复的行。

SELECT column1, column2 FROM table1 UNION ALL SELECT column1, column2 FROM table2;去重:UNION ALL不去除重复的行,返回所有结果。

性能: 由于不进行去重操作,UNION ALL的性能相对较高。

用途: 当需要合并结果集并且希望包含所有行,包括重复的行时使用。

示例代码import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.sql.SQLException;

public class UnionExample {private static final String JDBC_URL = "jdbc:mysql://localhost:3306/yourdatabase";private static final String JDBC_USER = "yourusername";private static final String JDBC_PASSWORD = "yourpassword";

public static void main(String[] args) {try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);Statement stmt = conn.createStatement()) {

// 示例数据准备String createTableSQL1 = "CREATE TABLE IF NOT EXISTS table1 (id INT, name VARCHAR(255))";String createTableSQL2 = "CREATE TABLE IF NOT EXISTS table2 (id INT, name VARCHAR(255))";stmt.executeUpdate(createTableSQL1);stmt.executeUpdate(createTableSQL2);

String insertDataSQL1 = "INSERT INTO table1 (id, name) VALUES (1, 'Alice'), (2, 'Bob')";String insertDataSQL2 = "INSERT INTO table2 (id, name) VALUES (2, 'Bob'), (3, 'Charlie')";stmt.executeUpdate(insertDataSQL1);stmt.executeUpdate(insertDataSQL2);

// 使用 UNION String unionSQL = "SELECT id, name FROM table1 UNION SELECT id, name FROM table2";try (ResultSet rs = stmt.executeQuery(unionSQL)) {System.out.println("Results of UNION:");while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");System.out.println("ID: " + id + ", Name: " + name);}}

// 使用 UNION ALL String unionAllSQL = "SELECT id, name FROM table1 UNION ALL SELECT id, name FROM table2";try (ResultSet rs = stmt.executeQuery(unionAllSQL)) {System.out.println("Results of UNION ALL:");while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");System.out.println("ID: " + id + ", Name: " + name);}}

// 清理示例数据stmt.executeUpdate("DROP TABLE IF EXISTS table1");stmt.executeUpdate("DROP TABLE IF EXISTS table2");

} catch (SQLException e) {e.printStackTrace();}}}在上述代码中,演示了如何使用 JDBC 执行UNION和UNION ALL操作。请根据需要调整数据库连接字符串、用户名、密码和 SQL 语句。

总结UNION: 合并结果集并去除重复的行。

UNION ALL: 合并结果集并保留所有重复的行。

到此这篇关于SQL中UNION与UNION ALL的区别小结的文章就介绍到这了,更多相关SQL UNION与UNION ALL区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:MySQL中关键字UNION和UNION ALL的区别MySQL之union和union all的使用及区别说明简单聊一聊SQL中的union和union all带例子详解Sql中Union和Union ALL的区别MySQL系列理解运用union(all)与limit及exists关键字教程简单了解MySQL union all与union的区别MySQL中UNION与UNION ALL的基本使用方法浅析mysql union和union all 5分钟了解MySQL5.7中union all用法的黑科技SQL语句之Union和Union All的用法

相关文章