SQL查询合并

2024年05月26日 SQL查询合并 极客笔记

SQL查询合并

在实际工作中,我们经常需要从不同的数据源中获取信息,并且有时候需要将这些信息合并起来进行分析。在SQL中,我们可以使用UNION、UNION ALL、JOIN等操作来实现不同表之间的数据合并。本文将详细介绍SQL查询合并的几种常见方式。

UNION

UNION操作用于合并两个或多个SELECT语句的结果集,并去除重复行。假设有两个表A和B,分别存储了员工的基本信息,我们可以使用UNION操作来将这两个表的数据合并起来。

-- 创建表A并插入数据
CREATE TABLE A (
    id INT,
    name VARCHAR(50),
    age INT
);

INSERT INTO A (id, name, age) VALUES (1, 'Alice', 25);
INSERT INTO A (id, name, age) VALUES (2, 'Bob', 30);

-- 创建表B并插入数据
CREATE TABLE B (
    id INT,
    name VARCHAR(50),
    age INT
);

INSERT INTO B (id, name, age) VALUES (3, 'Cathy', 28);
INSERT INTO B (id, name, age) VALUES (4, 'David', 35);

-- 使用UNION操作合并表A和表B的数据
SELECT id, name, age FROM A
UNION
SELECT id, name, age FROM B;

运行以上SQL语句,可以得到合并后的结果集:

id | name  | age
1  | Alice | 25
2  | Bob   | 30
3  | Cathy | 28
4  | David | 35

需要注意的是,UNION操作会去除重复的行。如果想要保留重复行,可以使用UNION ALL操作。

JOIN

除了使用UNION操作外,我们还可以使用JOIN操作来合并不同表之间的数据。JOIN操作根据两张表之间的关联键来进行数据合并,并可以根据不同的JOIN类型来选择所需的数据合并方式。常见的JOIN类型包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN。

假设有两个表A和B,表A存储了员工的基本信息,表B存储了员工的工资信息,我们可以使用JOIN操作来将这两个表的数据合并起来。

-- 创建表A并插入数据
CREATE TABLE A (
    id INT,
    name VARCHAR(50),
    age INT
);

INSERT INTO A (id, name, age) VALUES (1, 'Alice', 25);
INSERT INTO A (id, name, age) VALUES (2, 'Bob', 30);

-- 创建表B并插入数据
CREATE TABLE B (
    id INT,
    salary DECIMAL(10, 2)
);

INSERT INTO B (id, salary) VALUES (1, 5000.00);
INSERT INTO B (id, salary) VALUES (2, 6000.00);

-- 使用INNER JOIN操作合并表A和表B的数据
SELECT A.id, A.name, A.age, B.salary
FROM A
INNER JOIN B ON A.id = B.id;

运行以上SQL语句,可以得到INNER JOIN合并后的结果集:

id | name  | age | salary
1  | Alice | 25  | 5000.00
2  | Bob   | 30  | 6000.00

除了INNER JOIN外,还可以使用LEFT JOIN、RIGHT JOIN和FULL JOIN来进行不同方式的数据合并。这些JOIN操作在处理不同类型合并时很有用,可以根据实际需求选择合适的JOIN类型。

UNION ALL

如果想要保留重复行,可以使用UNION ALL操作。UNION ALL操作合并两个或多个SELECT语句的结果集,不会去重。

-- 创建表C并插入数据
CREATE TABLE C (
    id INT,
    name VARCHAR(50),
    age INT
);

INSERT INTO C (id, name, age) VALUES (1, 'Alice', 25);
INSERT INTO C (id, name, age) VALUES (1, 'Alice', 25);
INSERT INTO C (id, name, age) VALUES (3, 'Cathy', 28);
INSERT INTO C (id, name, age) VALUES (4, 'David', 35);

-- 使用UNION ALL操作合并表A和表C的数据
SELECT id, name, age FROM A
UNION ALL
SELECT id, name, age FROM C;

运行以上SQL语句,可以得到合并后的结果集:

id | name  | age
1  | Alice | 25
1  | Alice | 25
3  | Cathy | 28
4  | David | 35

结论

本文介绍了SQL查询合并的几种常见方式,包括UNION、JOIN和UNION ALL操作。通过这些操作,我们可以很方便地合并不同表的数据,进行进一步的处理和分析。在实际工作中,根据具体需求选择合适的合并方式是非常重要的,可以提高查询效率和准确性。

本文链接:http://so.lmcjl.com/news/5383/

展开阅读全文