在 MySQL 中,联合查询主要使用 `UNION` 和 `UNION ALL` 关键字,它们用于合并多个 `SELECT` 语句的结果集。`UNION` 会去除重复的记录,而 `UNION ALL` 不会去除重复记录。以下是使用联合查询实现多数据表查询操作的方法及示例。
### 联合查询的基本语法
```sql
SELECT column1, column2, ...
FROM table1
WHERE condition
UNION [ALL]
SELECT column1, column2, ...
FROM table2
WHERE condition;
```
### 示例场景及查询操作
假设存在两个表:`orders`(订单表)和 `sales`(销售表),表结构和数据如下:
#### 创建 `orders` 表并插入示例数据
```sql
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_name VARCHAR(50),
amount DECIMAL(10, 2)
);
INSERT INTO orders (order_id, customer_name, amount)
VALUES (1, 'Alice', 100.00),
(2, 'Bob', 200.00),
(3, 'Charlie', 150.00);
```
#### 创建 `sales` 表并插入示例数据
```sql
CREATE TABLE sales (
sale_id INT PRIMARY KEY,
customer_name VARCHAR(50),
amount DECIMAL(10, 2)
);
INSERT INTO sales (sale_id, customer_name, amount)
VALUES (1, 'Alice', 50.00),
(2, 'David', 300.00),
(3, 'Charlie', 200.00);
```
#### 使用 `UNION` 进行联合查询
```sql
SELECT customer_name, amount
FROM orders
UNION
SELECT customer_name, amount
FROM sales;
```
上述查询会合并 `orders` 表和 `sales` 表中的 `customer_name` 和 `amount` 列,并去除重复的记录。
#### 使用 `UNION ALL` 进行联合查询
```sql
SELECT customer_name, amount
FROM orders
UNION ALL
SELECT customer_name, amount
FROM sales;
```
上述查询会合并 `orders` 表和 `sales` 表中的 `customer_name` 和 `amount` 列,不会去除重复的记录。
### 根据给定数据库和数据表用 `SELECT` 语句完成查询的示例
假设要查询 `orders` 表和 `sales` 表中客户名为 `Alice` 的记录:
```sql
SELECT customer_name, amount
FROM orders
WHERE customer_name = 'Alice'
UNION ALL
SELECT customer_name, amount
FROM sales
WHERE customer_name = 'Alice';
```