SQL合并两个表

在数据库中,有时候需要将两个表按照某种条件进行合并,以方便数据查询和分析。SQL提供了多种合并表的方法,其中包括联接(JOIN)、联合(UNION)等操作。
联接(JOIN)操作
在SQL中,JOIN操作是最常用的表合并方法之一。它允许用户根据两个表之间的关联条件,将它们的数据连接在一起。
内联接(INNER JOIN)
内联接是最基本的联接类型,它只会返回两个表中满足联接条件的数据。假设有两个表A和B,我们可以使用以下语法进行内联接:
SELECT *
FROM A
INNER JOIN B
ON A.key = B.key;
在这个示例中,表A和表B根据它们的键(key)列进行内联接。只有当A和B的key值相等时,才会将对应的行连接在一起。
外联接(OUTER JOIN)
外联接则可以分为左外联接(LEFT JOIN)、右外联接(RIGHT JOIN)和全外联接(FULL JOIN)三种。
- 左外联接(LEFT JOIN):返回左表中所有的行和右表中满足联接条件的行。
SELECT *
FROM A
LEFT JOIN B
ON A.key = B.key;
- 右外联接(RIGHT JOIN):返回右表中所有的行和左表中满足联接条件的行。
SELECT *
FROM A
RIGHT JOIN B
ON A.key = B.key;
- 全外联接(FULL JOIN):返回两个表中所有的行,无论是否有对应的行。
SELECT *
FROM A
FULL JOIN B
ON A.key = B.key;
联合(UNION)操作
联合是将两个或多个表中的行合并成一个结果集,但要求各个表中返回的列数和类型必须一样。
SELECT *
FROM A
UNION
SELECT *
FROM B;
上面的示例中,我们将表A和表B中的数据合并并返回,注意联合操作会自动去重,如果需要保留重复行,可以使用UNION ALL。
SELECT *
FROM A
UNION ALL
SELECT *
FROM B;
示例
假设我们有两个表A和B,分别如下所示:
表A:
| id | name | age |
|---|---|---|
| 1 | Alice | 25 |
| 2 | Bob | 30 |
| 3 | Charlie | 28 |
表B:
| id | salary | department |
|---|---|---|
| 1 | 5000 | HR |
| 3 | 6000 | IT |
| 4 | 5500 | Sales |
现在我们需要将这两个表按照id进行内联接,并返回如下结果:
SELECT *
FROM A
INNER JOIN B
ON A.id = B.id;
运行结果:
| id | name | age | salary | department |
|---|---|---|---|---|
| 1 | Alice | 25 | 5000 | HR |
| 3 | Charlie | 28 | 6000 | IT |
以上就是SQL中合并两个表的方法,通过联接和联合操作,可以实现对表的快速合并和查询。在实际应用中,根据具体的需求选择合适的合并方式非常重要。
极客教程