MYSQL两表联合查询,实现条件筛选(mysql两表查询带条件)

MYSQL两表联合查询,实现条件筛选

在数据库操作中,经常需要使用联合查询的功能获取多个表中的数据。MYSQL作为一款常见的关系型数据库管理系统,具有强大的查询功能,可以通过联合查询实现不同表中的数据筛选和合并。本文将介绍MYSQL两表联合查询的基本知识,并提供示例代码,帮助读者更好地理解和应用这一功能。

基础知识

MYSQL联合查询的基本语法如下:

SELECT column_name(s) FROM table1

UNION

SELECT column_name(s) FROM table2;

其中,UNION用于连接两个或多个SELECT语句的结果集。可以使用UNION ALL代替UNION,前者不会去重,而后者会去重。

为了进一步筛选数据,我们可以在联合查询的基础上添加WHERE子句,从而实现条件筛选。

以下是一个简单的示例,演示如何从两张表中获取姓名和年龄并按照年龄升序排列:

SELECT name, age FROM table1

UNION

SELECT name, age FROM table2

WHERE age > 18

ORDER BY age ASC;

在这个示例中,我们从table1和table2两个表中获取姓名和年龄,然后对数据进行筛选。我们将结果按照年龄升序排列。

示例代码

为了更好地理解上述MYSQL联合查询的知识,以下提供一个完整的示例代码,让读者在实践中学习如何使用MYSQL联合查询实现条件筛选。

我们使用两张表,一张是存储学生信息的表students,一张是存储成绩信息的表scores。这两个表的关联字段为学生的ID(student_id)。

在此基础上,我们需要查询每个学生的姓名和总分,并且仅列出总分大于等于80分的学生。

CREATE TABLE students (

id INT(11) PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(50) NOT NULL,

gender ENUM(‘男’, ‘女’) NOT NULL,

age INT(11) NOT NULL

);

INSERT INTO students (name, gender, age) VALUES (‘张三’, ‘男’, 18);

INSERT INTO students (name, gender, age) VALUES (‘李四’, ‘女’, 19);

INSERT INTO students (name, gender, age) VALUES (‘王五’, ‘男’, 20);

INSERT INTO students (name, gender, age) VALUES (‘赵六’, ‘女’, 21);

CREATE TABLE scores (

id INT(11) PRIMARY KEY AUTO_INCREMENT,

student_id INT(11) NOT NULL,

course VARCHAR(50) NOT NULL,

score INT(11) NOT NULL

);

INSERT INTO scores (student_id, course, score) VALUES (1, ‘数学’, 90);

INSERT INTO scores (student_id, course, score) VALUES (1, ‘语文’, 89);

INSERT INTO scores (student_id, course, score) VALUES (1, ‘英语’, 80);

INSERT INTO scores (student_id, course, score) VALUES (2, ‘数学’, 75);

INSERT INTO scores (student_id, course, score) VALUES (2, ‘语文’, 85);

INSERT INTO scores (student_id, course, score) VALUES (2, ‘英语’, 90);

INSERT INTO scores (student_id, course, score) VALUES (3, ‘数学’, 80);

INSERT INTO scores (student_id, course, score) VALUES (3, ‘语文’, 70);

INSERT INTO scores (student_id, course, score) VALUES (3, ‘英语’, 85);

INSERT INTO scores (student_id, course, score) VALUES (4, ‘数学’, 95);

INSERT INTO scores (student_id, course, score) VALUES (4, ‘语文’, 90);

INSERT INTO scores (student_id, course, score) VALUES (4, ‘英语’, 88);

SELECT

students.name,

SUM(scores.score) AS total_score

FROM

students,

scores

WHERE

students.id = scores.student_id

HAVING

total_score >= 240;

在上述代码中,我们从students和scores两个表中获取数据,其中students.id和scores.student_id关联。在WHERE子句中进行了筛选,仅提取总分大于等于240分的学生信息。将结果按照学生姓名升序排序。

总结

本文简要介绍了MYSQL两表联合查询的基本知识,并通过实例代码演示了如何使用联合查询进行条件筛选。在实际应用中,MYSQL联合查询可以实现数据的快速筛选和处理,并且可以与其他SQL语句(如WHERE、HAVING、ORDER BY)结合使用,实现更强大的功能。通过不断练习和实践,读者可以更好地掌握这一技能,提高数据库处理能力。


数据运维技术 » MYSQL两表联合查询,实现条件筛选(mysql两表查询带条件)