MsSql

关注公众号 jb51net

关闭
首页 > 数据库 > MsSql > SQL UNION与UNION ALL区别

SQL中UNION与UNION ALL的区别小结

作者:灰_灰丶灰

UNION 和 UNION ALL 都用于将两个或多个结果集合并为一个结果集,但它们在处理重复数据方面有显著区别,本文就来介绍一下SQL中UNION与UNION ALL的区别小结,感兴趣的可以了解一下

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

1. UNION

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

SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;

2. UNION ALL

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

SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;

示例代码

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 语句。

总结

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

您可能感兴趣的文章:
阅读全文