2024年06月03日 SQL两张表数据合并成一张表 极客笔记
在SQL数据库中,我们经常会遇到需要将两张表的数据合并成一张新表的情况。这种操作称为“表的连接”。表的连接可以根据条件将两张表中的数据进行关联,然后将符合条件的数据合并到一张新表中。在实际应用中,表的连接是非常常见和重要的操作之一。
在SQL中,表的连接有多种方式,常用的有以下几种:
不同的连接方式适用于不同的需求,我们可以根据具体的情况选择适合的连接方式。
内连接是最常用的连接方式,它只返回符合连接条件的数据。
SELECT *
FROM table1
INNER JOIN table2
ON table1.column = table2.column;
假设我们有两张表table1
和table2
,它们的数据如下:
table1
id | name |
---|---|
1 | Alice |
2 | Bob |
3 | Carol |
table2
id | age |
---|---|
1 | 30 |
2 | 25 |
4 | 40 |
我们可以通过内连接将这两张表的数据合并:
SELECT table1.id, table1.name, table2.age
FROM table1
INNER JOIN table2
ON table1.id = table2.id;
运行以上SQL语句,得到的结果如下:
id | name | age |
---|---|---|
1 | Alice | 30 |
2 | Bob | 25 |
通过内连接,我们只得到了两张表中id相同的行的数据。
左连接会返回左表中所有的行,以及右表中符合连接条件的行。
SELECT *
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;
继续以table1
和table2
为例,我们运行以下SQL语句:
SELECT table1.id, table1.name, table2.age
FROM table1
LEFT JOIN table2
ON table1.id = table2.id;
得到的结果如下:
id | name | age |
---|---|---|
1 | Alice | 30 |
2 | Bob | 25 |
3 | Carol | NULL |
通过左连接,我们得到了左表table1
中所有的行,以及右表table2
中与左表匹配的行。
右连接与左连接相反,它会返回右表中所有的行,以及左表中符合连接条件的行。
SELECT *
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;
继续以table1
和table2
为例,我们运行以下SQL语句:
SELECT table1.id, table1.name, table2.age
FROM table1
RIGHT JOIN table2
ON table1.id = table2.id;
得到的结果如下:
id | name | age |
---|---|---|
1 | Alice | 30 |
2 | Bob | 25 |
NULL | NULL | 40 |
通过右连接,我们得到了右表table2
中所有的行,以及左表table1
中与右表匹配的行。
全连接返回左表和右表中所有的行,并将符合连接条件的行进行合并。
SELECT *
FROM table1
FULL JOIN table2
ON table1.column = table2.column;
继续以table1
和table2
为例,我们运行以下SQL语句:
SELECT table1.id, table1.name, table2.age
FROM table1
FULL JOIN table2
ON table1.id = table2.id;
得到的结果如下:
id | name | age |
---|---|---|
1 | Alice | 30 |
2 | Bob | 25 |
3 | Carol | NULL |
NULL | NULL | 40 |
通过全连接,我们得到了左表和右表中所有的行,并合并了符合连接条件的行。
在SQL中,表的连接是一种非常有用的操作,可以帮助我们将不同表中的数据进行关联和合并。不同的连接方式适用于不同的情况,我们可以根据具体的需求选择适合的连接方式。通过表的连接,我们可以快速高效地处理各种复杂的数据关联和分析任务。
本文链接:http://so.lmcjl.com/news/5848/