[mysql基础文档]-29-inner join内联查询

引言

内联查询就是将一张表的某一列和另一张表的某一列进行比对,找出匹配的字段,最后通过select筛选匹配记录显示。

文章目录

0×1.如何使用inner join内联查询

首先创建两个表A和B,分别保存三个人的名称:

					mysql> create table A(aid tinyint primary key default 0,aname char(20) not null default '');
					mysql> create table B(bid tinyint primary key default 0,bname char(20) not null default '');

					mysql> insert into A values(1,'susam'),(2,'jenny'),(3,'mary');
					mysql> insert into B values(2,'tom'),(3,'john'),(4,'george');


					mysql> select * from A;
					+-----+-------+
					| aid | aname |
					+-----+-------+
					|   1 | susam |
					|   2 | jenny |
					|   3 | mary  |
					+-----+-------+

					mysql> select * from B;
					+-----+--------+
					| bid | bname  |
					+-----+--------+
					|   2 | tom    |
					|   3 | john   |
					|   4 | george |
					+-----+--------+
					

对这两张表进行inner join查询,查找出两表主键列匹配的记录并显示:

					--"A inner join B"将A连接到B,on后面指定使用哪一列连接,本例中使用A表的aid连接到B表的bid,数据库会找出这两列中匹配的字段2和3,将这两个字段对应的记录连接起来组成另一张表,对这张表select想取出哪一列就取出哪一列,甚至可以用where筛选结果
					mysql> select A.aid,A.aname,B.bid,B.bname
					    -> from
					    -> A inner join B
					    -> on
					    -> A.aid=B.bid;
					+-----+-------+-----+-------+
					| aid | aname | bid | bname |
					+-----+-------+-----+-------+
					|   2 | jenny |   2 | tom   |
					|   3 | mary  |   3 | john  |
					+-----+-------+-----+-------+

					--如果是显示连接后的整张表,可以直接用下面的语法
					mysql> select * from A inner join B on A.aid=B.bid;

					--使用where对结果集进行筛选
					mysql> select * from A inner join B on A.aid=B.bid where aid=2;
					+-----+-------+-----+-------+
					| aid | aname | bid | bname |
					+-----+-------+-----+-------+
					|   2 | jenny |   2 | tom   |
					+-----+-------+-----+-------+
					

P.s:查询模型有一个很重要的概念,所有查询,子查询或内联查询返回的结果集(表),都可以当做一张全新的表进行再次查询和筛选。