UNION
是 MySQL 中的一个 SQL 操作符,用于合并两个或多个 SELECT
语句的结果集,并且会自动去除重复的记录。这个操作符要求每个 SELECT
语句必须具有相同数量的列,并且对应的列必须具有相似的数据类型。
UNION
的基本语法如下:
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
UNION
可以避免编写复杂的连接查询。UNION
会自动去除结果集中的重复记录。MySQL 还提供了 UNION ALL
,它与 UNION
类似,但不会去除重复记录。UNION ALL
的性能通常优于 UNION
,因为它不需要进行去重操作。
假设你有两个表,一个是 customers_usa
,另一个是 customers_europe
,它们都包含客户信息,但你只想获取所有客户的列表而不关心他们来自哪个表。这时你可以使用 UNION
:
SELECT id, name, email FROM customers_usa
UNION
SELECT id, name, email FROM customers_europe;
SELECT
语句中的列数不同,MySQL 会报错。确保每个 SELECT
语句中的列数相同。SELECT
语句中的列数不同,MySQL 会报错。确保每个 SELECT
语句中的列数相同。SELECT
语句中的对应列具有相似的数据类型。SELECT
语句中的对应列具有相似的数据类型。UNION
可能会导致性能问题,特别是当使用 UNION
而不是 UNION ALL
时,因为需要去除重复记录。在这种情况下,可以考虑优化查询或使用其他方法来合并数据。以下是一个简单的示例,展示了如何使用 UNION
合并两个表的数据:
-- 创建示例表
CREATE TABLE customers_usa (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
CREATE TABLE customers_europe (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
-- 插入示例数据
INSERT INTO customers_usa (id, name, email) VALUES
(1, 'John Doe', 'john@example.com'),
(2, 'Jane Smith', 'jane@example.com');
INSERT INTO customers_europe (id, name, email) VALUES
(2, 'Jane Smith', 'jane@example.com'),
(3, 'Alice Johnson', 'alice@example.com');
-- 使用 UNION 合并数据
SELECT id, name, email FROM customers_usa
UNION
SELECT id, name, email FROM customers_europe;
希望这些信息对你有所帮助!如果你有其他问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云