MySQL:如何查询两表相等的数据?
在MySQL数据库中,经常需要查询两个表中相等的数据,比如查询学生表和班级表中同时存在的学生信息。这里我们就来学习一下如何实现这个功能。
我们需要用到MySQL中的INNER JOIN语句。INNER JOIN用于在两个或多个表之间进行连接,只返回匹配条件的行。
我们以查询学生表与班级表中相同的学生信息为例,具体步骤如下:
1.创建学生表和班级表,并插入数据:
CREATE TABLE student (
id INT(11) PRIMARY KEY,
name VARCHAR(50) NOT NULL,
class_id INT(11) NOT NULL
);
CREATE TABLE class (
id INT(11) PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
INSERT INTO student (id, name, class_id) VALUES
(1, ‘张三’, 1),
(2, ‘李四’, 2),
(3, ‘王五’, 1),
(4, ‘赵六’, 3),
(5, ‘钱七’, 1),
(6, ‘孙八’, 2);
INSERT INTO class (id, name) VALUES
(1, ‘一班’),
(2, ‘二班’),
(3, ‘三班’);
2.使用INNER JOIN语句查询相等的数据:
SELECT student.id, student.name, class.name
FROM student
INNER JOIN class
ON student.class_id = class.id;
解释一下上面的语句:
SELECT student.id, student.name, class.name:选择需要查询的字段,这里选择学生表的id和name字段,以及班级表的name字段。
FROM student INNER JOIN class:从学生表和班级表中查询数据。
ON student.class_id = class.id:指定连接条件,即学生表中的class_id字段等于班级表中的id字段。
执行以上语句,将返回id、name和班级name相同的数据,结果如下:
id | name | name
—|——|—–
1 | 张三 | 一班
3 | 王五 | 一班
5 | 钱七 | 一班
2 | 李四 | 二班
6 | 孙八 | 二班
这些学生都是在一班或二班中的,与三班中的赵六不相等,因此不会返回赵六的信息。
INNER JOIN语句并不是唯一的实现相等数据查询的方式,还有其他语句,比如LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN。如果需要查询数据时,左边或右边的表没有匹配的数据,则会返回NULL值。
总结一下:在MySQL中,查询两个表中相等的数据,可以使用INNER JOIN语句实现。INNER JOIN语句可以从两个或多个表中选择数据,并使用指定的连接条件连接这些表。INNER JOIN语句是实现相等数据查询的最常用和最快捷的方式之一,并具有很高的可读性和可维护性。