📜  MS SQL Server中的联合和联合全部(1)

📅  最后修改于: 2023-12-03 15:32:59.631000             🧑  作者: Mango

MS SQL Server中的联合和联合全部

介绍

在 MS SQL Server 中,联合和联合全部都可以用来将两个或多个查询的结果集合并到一起。 联合操作返回的结果集中不会有重复的行,而联合全部(即 Union All)操作返回的结果集中可以有重复的行。

语法
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

注:column_name(s) 是您想要选择的列名。如果要从所有列中检索,请使用星号 (*)。

联合操作的示例

我们将通过以下两个表演示如何使用联合操作,这两个表是学生信息和教师信息。

学生信息表

| id | name | age | city | |----|---------|-----|----------| | 1 | Alice | 18 | New York | | 2 | Bob | 20 | Beijing | | 3 | Charlie | 22 | Paris |

教师信息表

| id | name | subject | city | |----|--------|---------|----------| | 1 | John | Math | Tokyo | | 2 | Sarah | English | New York | | 3 | David | Physics | Beijing |

示例 1: 联合两个表

假设您想获取以城市为基础的所有人的名字。您可以使用以下 SQL 语句:

SELECT name, city FROM Student
UNION
SELECT name, city FROM Teacher;

结果:

| name | city | |---------|----------| | Alice | New York | | Bob | Beijing | | Charlie | Paris | | John | Tokyo | | Sarah | New York | | David | Beijing |

解释:结果集中的行不重复。即便 "Alice" 和 "Sarah" 在 "New York" 的城市中出现了两次,查询只返回一个结果。

示例 2: 联合两个表并对结果进行排序

现在您想按照城市名称将结果按字母顺序排序。您可以使用以下 SQL 语句:

SELECT name, city FROM Student
UNION
SELECT name, city FROM Teacher
ORDER BY city;

结果:

| name | city | |---------|----------| | Charlie | Paris | | John | Tokyo | | Bob | Beijing | | David | Beijing | | Alice | New York | | Sarah | New York |

解释:结果集中按照城市名称的字母顺序排序。

联合全部操作的示例

现在我们将演示如何使用联合全部操作来获取来自两个表的所有人。

示例 1: 联合两个表

假设您想获取来自学生和教师表的所有人的名字。您可以使用以下 SQL 语句:

SELECT name, city FROM Student
UNION ALL
SELECT name, city FROM Teacher;

结果:

| name | city | |---------|----------| | Alice | New York | | Bob | Beijing | | Charlie | Paris | | John | Tokyo | | Sarah | New York | | David | Beijing |

解释:结果集中包含重复的行。即便 "Alice" 和 "Sarah" 在 "New York" 的城市中出现了两次,查询返回了两个结果。

示例 2: 联合两个表并对结果进行排序

现在您想按照名称将结果按字母顺序排序。您可以使用以下 SQL 语句:

SELECT name, city FROM Student
UNION ALL
SELECT name, city FROM Teacher
ORDER BY name;

结果:

| name | city | |---------|----------| | Alice | New York | | Bob | Beijing | | Charlie | Paris | | David | Beijing | | John | Tokyo | | Sarah | New York |

解释:结果集中按照名称的字母顺序排序。

结论

使用联合操作和联合全部操作,您可以轻松地将两个或多个查询的结果集合并到一起。请注意:联合操作返回的结果集中不会有重复的行,而联合全部操作返回的结果集中可以有重复的行。