14-MySQL多表查询和子查询

447 阅读1分钟

前边我们学了单表的查询, 更多的时候我们用的是多表查询, 例如有两个表

牛人表(用户id, 姓名, 公司id)

公司表(公司id, 公司名)

  • 内链接 - inner join
-- 通过公司id链接两个表, 查询牛人和公司的对应关系。 inner可以省略
select
	u.uname,
	u.company '公司id',
	c.cname '公司名称'
from
	cattle_user u
	inner join company c on ( u.company = c.cid );

  • 左链接 - left join
-- 以左边的表为准, 左表有多少条记录, 即显示多少条记录, 右表没有对应数据的置为空
select
	u.uname,
	u.company '公司id',
	c.cname '公司名称' 
from
	cattle_user u
	left join company c on ( u.company = c.cid );

  • 右链接 - right join
-- 以右侧边的表为准, 右表有多少条记录, 即显示多少条记录, 左表没有对应数据的置为空
select
	u.uname,
	u.company '公司id',
	c.cname '公司名称' 
from
	cattle_user u
	right join company c on ( u.company = c.cid );

  • 子查询
-- 查询比阿里巴巴市值高的公司
select * from company where market_value > (select market_value from company where cname = '阿里巴巴');