【MySQL联合查询】内连接查询详解
在实际开发中,我们会联合多个表来实现查询,比如把班级表和学生表联合起来就同时可以看到班级、老师和学员的信息,一个班级表自连接。内连接查询中存在一种特殊的等值连接——自连接。所谓自连接,就是指表与其自身进行连接。例如,在学生表中查询学生小花所在班级的其他学生。不等值连接。 内连接查询中的不等连接就是在关键字ON后的匹配条件中通过除了等于关系运算符来实现不等条件外,还可以使用关系运算符,包含“>”“>
·
目录
什么是内连接查询
在实际开发中,我们会联合多个表来实现查询,比如把班级表和学生表联合起来就同时可以看到班级、老师和学员的信息,一个班级表:
一个班级对应着多个学生,以下是与之对应的学生表:
将两个表中ID 相同的记录关联起来组成一个新的“列表”,这就是联合查询:
这种只有2张表匹配的行才能显示的连接方式在Mysql 中称之为内连接: INNER JOIN
在MySQL中内连接数据查询通过“INNER JOIN…ON”语句来实现,语法形式如下所示。
SELECT field1,field2,…,fieldn FROM tablename1
INNER JOIN tablename2 [INNER JOIN tablenamen] ON CONDITION
- 参数fieldn表示要查询的字段名,来源于所连接的表tablename1和tablename2;
- 关键字INNER JOIN表示表进行内连接;
- 参数CONDITION表示进行匹配的条件。
这里有student表和class表,用来对下面三种自连接方式做演示:
自连接
内连接查询中存在一种特殊的等值连接——自连接。所谓自连接,就是指表与其自身进行连接。
例如,在学生表中查询学生小花所在班级的其他学生
select t1.name,t1.class_id
from student t1
inner join student t2
on t1.class_id=t2.class_id and t2.name='小花';
等值连接
内连接查询中的等值连接就是在关键字ON后的匹配条件中通过等于关系运算符(=)来实现等值条件。
例如:
select *
from class as a
inner join student as b
where a.id = b.class_id;
不等值连接
内连接查询中的不等连接就是在关键字ON后的匹配条件中通过除了等于关系运算符来实现不等条件外,还可以使用关系运算符,包含“>”“>=”“<”“<=”和“!=”等运算符号。
例如:
select *
from class as a
inner join student as b
where a.id != b.class_id;
更多推荐
已为社区贡献7条内容
所有评论(0)