MySQL 如何合并两个MySQL表
MySQL是一款常用的关系型数据库管理系统,其具有高效、稳定、易用等特点,在各行各业的应用十分广泛。当我们要将两个MySQL表中的数据进行合并时,该如何操作呢?
为了更好地理解与学习,本文将采用实例来阐述如何合并MySQL表。假设我们有两张表table1
与table2
,其中table1
的结构如下:
CREATE TABLE `table1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
table2
的结构如下:
CREATE TABLE `table2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`address` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
两张表中都有id
字段,但是table1
中没有address
字段,而table2
中没有age
字段,接下来我们将学习如何实现将这两张表的数据进行合并。
阅读更多:MySQL 教程
使用UNION ALL关键字合并
在MySQL中,合并两张表最简单的做法就是使用UNION ALL
关键字。UNION ALL
将会将两张表的各自所有行合并在一起,而不做任何去重操作(若需要去重,使用UNION
),如下:
SELECT * FROM table1
UNION ALL
SELECT * FROM table2
使用JOIN关键字合并
但是在实际应用中,通常情况下需要将两个表中的某些列进行合并,此时可使用JOIN
关键字。JOIN
是将两张表中的数据按照某列进行匹配,匹配成功后将两张表中匹配的行合并在一起,如下:
内连接(INNER JOIN)
内连接操作会将两张表中匹配的行合并,其中匹配的列的数据在结果集中显示一次。
SELECT t1.id, t1.name, t1.age, t2.address
FROM table1 t1
INNER JOIN table2 t2
ON t1.id = t2.id
左连接(LEFT JOIN)
左连接操作将保留左边表的全部数据,并在右边表中查找匹配的行。 如果没有匹配,右侧将填充 NULL 值。
SELECT t1.id, t1.name, t1.age, t2.address
FROM table1 t1
LEFT JOIN table2 t2
ON t1.id = t2.id
右连接(RIGHT JOIN)
右连接操作将保留右侧表的全部数据,并在左侧表中查找匹配的行。 如果没有匹配,左侧将填充 NULL 值。
SELECT t1.id, t1.name, t1.age, t2.address
FROM table1 t1
RIGHT JOIN table2 t2
ON t1.id = t2.id
至此,我们已经学习了两种合并MySQL表的方法,可以根据具体的需求选择不同的操作,实现数据的快速合并。
结论
本文向读者介绍了如何使用UNION ALL
和JOIN
关键字来合并两个MySQL表。UNION ALL
将两个表中的数据合并在一起,JOIN
则是将两个表的相匹配的数据合并。以上两种方法都可以根据实际需求进行使用。希望本文能够对读者有所帮助。