MySQL实现两表结果合并(mysql 两表结果合并)
MySQL实现两表结果合并
在实际的数据库应用中,有时候需要将两个表的查询结果合并在一起,这就需要用到MySQL的联合查询(Union)。 联合查询可以将两个或多个SELECT语句的结果合并在一起。
语法:
SELECT column1, column2, ... FROM table_name1
UNION [ALL]SELECT column1, column2, ... FROM table_name2
[UNION [ALL]SELECT column1, column2, ... FROM table_name3];
其中,列的数量必须相同,列之间的数据类型要匹配,否则将会报错。
UNION ALL选项,将会保留所有的行,包括重复的行。如果不加ALL,那么重复的行将只会被保留一次。
下面我们以一个实例来演示如何使用联合查询将两个表的查询结果合并在一起:
首先我们创建两个表student和teacher,代码如下:
CREATE TABLE student (
id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL,
age int(11) NOT NULL, PRIMARY KEY (id)
);
CREATE TABLE teacher ( id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL, title varchar(255) NOT NULL,
PRIMARY KEY (id));
然后我们向student表和teacher表中插入一些数据,代码如下:
INSERT INTO student (name, age) VALUES ('John', 20), ('Mike', 22), ('Lisa',21);
INSERT INTO teacher (name, title) VALUES ('Tom', 'assistant'), ('Peter', 'professor'), ('Sue', 'lecturer');
现在我们想要将学生和教师的姓名和职称合并在一起查询,代码如下:
SELECT name, '' as title from student
UNIONSELECT name, title from teacher;
运行结果如下:
+-------+-----------+
| name | title |+-------+-----------+
| John | || Lisa | |
| Mike | || Peter | professor |
| Sue | lecturer || Tom | assistant |
+-------+-----------+
可以看到,结果中包含了学生和教师的姓名和职称,并且将结果合并在了一起。其中,我们使用了UNION将两个查询结果合并在一起,并且使用了一个空字符串来代替学生的职称。
总结:
联合查询是MySQL中非常有用的一种查询方式,可以方便地将多个查询结果合并在一起,同时也可以使用UNION ALL选项来保留重复的行。在实际应用中,我们可以根据具体的需求灵活使用联合查询。