温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SQL中的联合查询如何操作

发布时间:2025-08-14 08:44:24 来源:亿速云 阅读:118 作者:小樊 栏目:数据库

在SQL中,联合查询(Union Query)是一种将两个或多个SELECT语句的结果集合并成一个结果集的操作。联合查询要求各个SELECT语句的列数和数据类型必须相同。以下是使用联合查询的基本步骤:

基本语法

SELECT column1, column2, ...
FROM table1
WHERE condition
UNION [ALL]
SELECT column1, column2, ...
FROM table2
WHERE condition;
  • UNION:默认情况下,UNION会去除重复的行。
  • UNION ALL:保留所有行,包括重复的行。

示例

假设有两个表 employees_usa 和 employees_europe,它们的结构相同,包含员工的姓名和工资信息。

表结构

CREATE TABLE employees_usa (
    id INT,
    name VARCHAR(100),
    salary DECIMAL(10, 2)
);

CREATE TABLE employees_europe (
    id INT,
    name VARCHAR(100),
    salary DECIMAL(10, 2)
);

插入示例数据

INSERT INTO employees_usa (id, name, salary) VALUES (1, 'John Doe', 50000.00);
INSERT INTO employees_usa (id, name, salary) VALUES (2, 'Jane Smith', 60000.00);

INSERT INTO employees_europe (id, name, salary) VALUES (3, 'Alice Johnson', 55000.00);
INSERT INTO employees_europe (id, name, salary) VALUES (4, 'Bob Brown', 65000.00);

联合查询示例

SELECT name, salary
FROM employees_usa
WHERE salary > 50000
UNION
SELECT name, salary
FROM employees_europe
WHERE salary > 50000;

这个查询会返回所有工资大于50000的员工,无论他们来自哪个地区,并且不会重复显示相同的记录。

注意事项

  1. 列数和数据类型:所有SELECT语句中的列数和对应列的数据类型必须相同。
  2. 排序:UNION 默认会对结果进行排序,而 UNION ALL 不会。如果需要特定的排序,可以在最后添加 ORDER BY 子句。
  3. 性能:由于 UNION 需要去重,可能会比 UNION ALL 慢一些,特别是在大数据集上。

高级用法

  • 使用别名:可以为每个SELECT语句中的列指定别名,以便在结果集中更容易识别。

    SELECT name AS EmployeeName, salary AS Salary
    FROM employees_usa
    WHERE salary > 50000
    UNION
    SELECT name AS EmployeeName, salary AS Salary
    FROM employees_europe
    WHERE salary > 50000;
    
  • 嵌套查询:可以在联合查询中使用子查询。

    SELECT name, salary
    FROM (
        SELECT name, salary
        FROM employees_usa
        WHERE salary > 50000
        UNION ALL
        SELECT name, salary
        FROM employees_europe
        WHERE salary > 50000
    ) AS combined_results;
    

通过这些基本操作和高级用法,你可以灵活地在SQL中使用联合查询来合并多个数据源的结果集。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手