美文网首页
2019-01-08今日份的SQL学习2之表连接

2019-01-08今日份的SQL学习2之表连接

作者: bf3780a4db09 | 来源:发表于2019-01-08 19:24 被阅读2次

表连接这一块必须另建一个文档哇,之前弄的晕乎乎的
1) 唯医网、宝宝树和迅雷的招聘职位有哪些【两种】
两个表通过companyId产生联系,先找出company表中这三个企业的companyId,再在岗位招聘表中查询这几个公司的招聘情况
法1:子查询

select * from data.dataanalyst
where companyId in
(select idcompany from data.company
where companyShortName in ('唯医网','宝宝树','迅雷'))

结果


image.png

但是上述查询只显示了dataanalyst表中的内容,未显示company的情况
法2:

select * from data.dataanalyst as d
inner join data.company as c
on d.companyId = c.idcompany
where c.companyShortName in ('唯医网','宝宝树','迅雷');

结果


image.png
image.png

可见,查询结果已将两个表连接起来
2) 150-500人(或者以外)公司规模的岗位有多少?占比多少?【两种】
先查询出150-500人规模的公司,再计算相应的招聘数量,招聘总量,最后进行计算
法1:

select count(*) as n1,(select count(positionId) from data.dataanalyst) as n2,
count(*)/(select count(positionId) from data.dataanalyst) as prob 
from data.dataanalyst
where companyId in
(select idcompany from data.company 
where companySize = '150-500人')

结果


image.png

法2:

select count(t.idcompany) as n1,count(*) as n2,count(t.idcompany)/count(*) 
as prob from data.dataanalyst as d
left join 
(select * from data.company
where companySize = '150-500人') as t
on d.companyId = t.idcompany

结果


image.png

150-500以外的查询需将子查询【companySize = '150-500人'】修改为【companySize <> '150-500人'】
利用法2语句可计算150-500人以外规模企业的招聘总数

select count(*) from data.dataanalyst as d
left join 
(select * from data.company
where companySize = '150-500人') as t
on d.companyId = t.idcompany
where t.idcompany is null

结果为3884
3) inner join:两个表完全匹配上的,两个表的交集
4) left join:左边主表完全输出,右边的表能匹配上就输出相应值,不能匹配上就输出null,right join与之类似
5) full join并集,不管A表或B表,拼凑在一起,拼不上的返回null,MySQL不支持full join
MySQL中有一个union(去掉重复值)和union all(保留重复值)

SELECT education FROM data.dataanalyst as da
UNION 
SELECT companySize FROM data.company
where companySize <> "150-500人"

结果有点像R里的rbind


image.png

相关文章

  • 2019-01-08今日份的SQL学习2之表连接

    表连接这一块必须另建一个文档哇,之前弄的晕乎乎的1) 唯医网、宝宝树和迅雷的招聘职位有哪些【两种】两个表通过co...

  • 连表查询:sql1992和sql1999

    sql1992 sql分类 1.笛卡尔积 (表乘表) 2.等值连接 表的连接条件使用“=” 3.非等值连接 表的连...

  • Oracle面试题之SQL tunting

    Oracle面试题之SQL tunting 1:列举几种表连接方式 答:一共有三种连接方式(SQL优化),嵌套循环...

  • 2020-04-01

    连接两表 SOLUTION 输入 输出 解题思路SQL 连接类型SQL 中有多种不同的连接: 内连接(INNER ...

  • 2019-01-08今日份的SQL学习1

    注:having字句只对聚合函数(count,sum,avg)有效,对列名无效,即having score > 8...

  • 你们项目平时怎么做数据库性能优化的?

    主要有以下几点吧: 1,sql语句优化,基于sql语法层面的优化。 2,表连接的优化。 3,使用临时表。 4,批量...

  • SQL常见面试题

    1、SQL的表连接方式有哪些?SQL中连接按结果集分为:内连接,外连接,交叉连接内连接:inner join on...

  • sql99语法连接查询

    二、sql99语法 /*语法:select 查询列表from 表1 别名 【连接类型】join 表2 别名on 连...

  • sql99语法

    二、sql99语法 /*语法:select 查询列表from 表1 别名 【连接类型】join 表2 别名on 连...

  • Sql之表的连接总结

    1、交叉连接(就是将两张表的数据 交叉组合在一起)有两张表 客户表:[Sales.Customers] 和订单表:...

网友评论

      本文标题:2019-01-08今日份的SQL学习2之表连接

      本文链接:https://www.haomeiwen.com/subject/wnibrqtx.html