SQL两张表数据合并成一张表

2024年06月03日 SQL两张表数据合并成一张表 极客笔记

SQL两张表数据合并成一张表

在SQL数据库中,我们经常会遇到需要将两张表的数据合并成一张新表的情况。这种操作称为“表的连接”。表的连接可以根据条件将两张表中的数据进行关联,然后将符合条件的数据合并到一张新表中。在实际应用中,表的连接是非常常见和重要的操作之一。

表的连接方式

在SQL中,表的连接有多种方式,常用的有以下几种:

  • 内连接(INNER JOIN)
  • 左连接(LEFT JOIN)
  • 右连接(RIGHT JOIN)
  • 全连接(FULL JOIN)

不同的连接方式适用于不同的需求,我们可以根据具体的情况选择适合的连接方式。

内连接(INNER JOIN)

内连接是最常用的连接方式,它只返回符合连接条件的数据。

SELECT * 
FROM table1
INNER JOIN table2
ON table1.column = table2.column;

假设我们有两张表table1table2,它们的数据如下:

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相同的行的数据。

左连接(LEFT JOIN)

左连接会返回左表中所有的行,以及右表中符合连接条件的行。

SELECT * 
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;

继续以table1table2为例,我们运行以下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中与左表匹配的行。

右连接(RIGHT JOIN)

右连接与左连接相反,它会返回右表中所有的行,以及左表中符合连接条件的行。

SELECT * 
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;

继续以table1table2为例,我们运行以下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中与右表匹配的行。

全连接(FULL JOIN)

全连接返回左表和右表中所有的行,并将符合连接条件的行进行合并。

SELECT * 
FROM table1
FULL JOIN table2
ON table1.column = table2.column;

继续以table1table2为例,我们运行以下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/

展开阅读全文