首页 > 数据库 > 数据库开发技术 > 《MySQL 入门教程》第 21 篇 集合操作符
UNION,用于将两个查询结果合并成一个结果集,返回第一个查询或者第二个查询中的数据;
INTERSECT,用于返回两个查询结果中的共同部分,即同时属于第一个查询结果和第二个查询结果的数据;
EXCEPT,用于返回出现在第一个查询结果中,但不在第二个查询结果中的数据。
结果集中字段的数量和顺序必须相同;
结果集中对应字段的类型必须匹配或兼容。
SELECT column1, column2, ...
FROM table1
UNION [DISTINCT | ALL]
SELECT col1, col2, ...
FROM table2;
CREATE TABLE t1(id int);
INSERT INTO t1 VALUES (1), (2);
CREATE TABLE t2(id int);
INSERT INTO t2 VALUES (1), (3);
SELECT id AS n FROM t1
UNION
SELECT id AS m FROM t2;
n|
-|
1|
2|
3|
SELECT id AS n FROM t1
UNION ALL
SELECT id AS m FROM t2;
n|
-|
1|
2|
1|
3|
SELECT 1 AS n, 'a' AS s
UNION ALL
SELECT 1 AS m;
ERROR 1222 (21000): The used SELECT statements have a different number of columns
SELECT 1 AS n, 'a' AS s
UNION ALL
SELECT 1, 2;
n|s|
-|-|
1|a|
1|2|
SELECT 1 AS n
UNION ALL
SELECT 1
UNION
SELECT 1;
n|
-|
1|
SELECT id AS n FROM t1
UNION ALL
SELECT id AS m FROM t2
ORDER BY n;
n|
-|
1|
1|
2|
3|
(SELECT id AS n FROM t1 ORDER BY id DESC LIMIT 1)
UNION ALL
(SELECT id AS m FROM t2 ORDER BY id LIMIT 1);
n|
-|
2|
1|
SELECT DISTINCT table1.column1, table1.column2, ...
FROM table1
JOIN table2
ON (table1.column1 = table2.col1 AND table1.column2 = table2.col2 ...);
SELECT DISTINCT table1.column1, table1.column2, ...
FROM table1
JOIN table2
ON (table1.column1 = table2.col1 AND table1.column2 = table2.col2 ...);
SELECT DISTINCT t1.id
FROM t1
JOIN t2 ON (t1.id = t2.id);
id|
--|
1|
SELECT DISTINCT id
FROM t1
WHERE id IN (SELECT id FROM t2);
id|
--|
1|
SELECT column1, column2, ...
FROM table1
EXCEPT
SELECT col1, col2, ...
FROM table2;
SELECT column1, column2, ...
FROM table1
LEFT JOIN table2
ON (table1.column1 = table2.col1 AND table1.column2 = table2.col2 ...)
WHERE table2.col1 IS NULL;
SELECT t1.id
FROM t1
LEFT JOIN t2 ON (t2.id = t1.id)
WHERE t2.id IS NULL;
id|
--|
2|
SELECT DISTINCT id
FROM t1
WHERE id NOT IN (SELECT id FROM t2);
id|
--|
2|
原文作者:SQL编程思想;如有侵权,请联系管理员删除。