首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL连接查询与嵌套查询「建议收藏」

很显然,需要用连接查询,学生情况存放在student表,学生选课情况存放在Study表,所以查询实际涉及Student和Study这两个表。...自然连接:在等值连接把目标重复属性列去掉连接查询 下面考虑用自然连接实现上述例子: SELECT Student.Sno,SName,SSex,Sdept,Cno,GradeFROM Student...,StudyWHERE Student.Sno=Study.Sno 结果: 自身连接查询:当查询结果涉及同一个表两个或以上列时,考虑用自身连接查询 例2:查询每一门课间接先行课(即先行课...查询结果: 外连接查询: 分为左外连接,右外连接, 左外连接:根据左表记录,在被连接右表找出符合条件记录与之匹配,找不到匹配,用null填充 右连接:根据右表记录,在被连接左表找出符合条件记录与之匹配...例1:找出至少一门课程成绩在90分以上女学生姓名 分析:已知是分数大于90分这个条件,通过这个条件找出Study表中大于90分所对应Sno,再通过连接查询Study表对应SnoSName

4.6K20

Mysql关联查询(内连接,外连接,自连接)

在使用数据库查询语句时,单表查询有时候不能满足项目的业务需求,在项目开发过程,有很多需求都是要涉及到多表连接查询,总结一下mysql多表关联查询 一,内连接查询 是指所有查询结果都是能够在连接表中有对应记录...t_dept d ON e.dept = d.id; 查询结果如下: 其中,没有部门的人员和部门没有员工部门都没有被查询出来,这就是内连接特点,只查询连接能够有对应记录,其中...,如果右表没有记录对应的话就显示null 查询结果: 关键字是left outer join,等效于left join,在关联查询,做外连接查询就是左连接查询,两者是一个概念 三,右外连接是同理...: 如果在oracle,直接就使用full outer join关键字连接两表就行了 五,自连接查询连接查询就是当前表与自身连接查询,关键点在于虚拟化出一张表给一个别名 例如:查询员工以及他上司名称...所以,自连接查询一般用作表某个字段值是引用另一个字段值,比如权限表,父权限也属于权限。

3.7K40
您找到你想要的搜索结果了吗?
是的
没有找到

mysql查询、子查询连接查询

having对查询结果列发挥作用,筛选数据 #查询本店商品价格比市场价低多少钱,输出低200元以上商品 select goods_id,good_name...#把上面的查询结果理解为一个临时表[存在于内存]【子查询】 #再从临时表中选出每个栏目最贵商品 select * from (select goods_id...//以上查询结果在本例的确能正确输出结果,但是,如果把tbb值改为10以查询结果b值就是10了,因为tab也是10,所以union后会被过 滤掉一个重复结果,...join tb on ta.n1= ta.n2 3、内连接 查询结果是左右连接交集,【即左右连接结果去除null项后并集(去除了重复项)】...a列都存在,表b数据只显示符合条件项目 再如表b左连接表a,查询hot相同数据 select a.

12.3K80

mysql连接查询_mysql左连接「建议收藏」

大家好,又见面了,我是你们朋友全栈君。...1.on 后面的条件和where 后面的条件区别 查询语句开始 会根据 on后面的条件创建一张虚拟表,左边表是全部数据,右边表会根据on后面的条件进行筛选。...然后再根据where后面的条件进行筛选虚拟表数据作为最终数据 所以如果是筛选右表条件 放在了where 则则会过滤掉 部分左表数据 结论:筛选右表条件和左右表关联条件写在on 筛选左表条件写在...where 2.右表条件放在on 如果右表数据量很大情况下会有很长查询时间 是因为创建虚拟表时候由于数据量大 查询条件没有索引造成 所以相应增加索引进行查询。...Index indexName(clum); ALTER TABLE optable_task_item ADD INDEX task_id ( `task_id` ); 4.那么where 条件创建索引时候有用呢

2.3K20

sparksql 中外连接查询谓词下推处理

join条件和join后条件 [1505293666375_5396_1505293666580.jpg] 那么这两类不同条件,在外连接查询是否都会下推呢?...不是的,是否下推是遵循一定规则,对于左连接查询,可以归纳为下表: 左表 右表 Join条件 不下推 下推 Join后条件 下推 不下推 3....究其原因,是因为在sparksql,把以上查询解析成了如下查询: [1505293913863_2083_1505293913921.jpg] 3.2....value 2 two 然后左表再和右表进行左连接,流程如下: 第一步:左表id为1行在右表没有,此时左表值保留,右表为null 第二步:左表id位2行在右表中有,并且RT.id大于1,...: 第一步:左表id为1行在右表可以找到,但是此时仅仅满足join条件,在使用where条件判断这条连接后数据时,发现右表id不满足RT.id>1条件,所以这条join结果不保留(注意,这里是不保留

4.6K21

SparkSql 中外连接查询谓词下推规则

连接查询连接条件 外连接查询(outter join),分为左外连接查询、右外连接查询以及全外连接查询,全外连接使用场景不多,所以本文重点讨论是左连接查询和右连接查询。...而上边提到谓词下推能否在两类条件中使用,在SparkSql则有特定规则,以左外连接查询为例,规则如下: ? 接下来对这个表格规则进行详细分析。...此时再和右表进行左连接,左表id为2行,在右表能找到id为2行,则连接结果如下: ? 可见,条件下推过滤了左表整整50%数据,相当牛叉,虽然只有两条。...此时再和右表连接,左表id为2行在右表能找到,且满足”LT.id = RT.id AND LT.id > 1“这个join条件,所以两表value都被保留。...至此,左联接查询四条规则分析完了,可以看出,在SparkSql对于外连接查询过滤条件,并不能在所有情况下都用来进行数据源过滤,如果使用得当会极大提升查询性能,如果使用不当,则会产生错误查询结果

1.7K90

EF Linq连接Left Join查询

linqjoin是inner join内连接,就是当两个表中有一个表对应数据没有的时候那个关联就不成立。 比如表A B数据如下 ?...from a in A join b in B on a.BId equals b.Id select new {a.Id, b.Id} 结果是 {1,1} {2,2} {4,4} 因为3在B表不存在...,所以连接失败,不返回,但是当我们需要返回一个{3, null}时候怎么办呢,这就是左连接,反之,如果是{null,3} 则是右连接。...re这个IEnumerable中了,所以select时候从re集合去取 这样即是左连接,返回结果是 {1,1} {2,2} {3,null} {4,4} 可以看到和直接内连接join差距在多了into...,把可能为空那个集合(表)放到一个集合,然后再对接进行DefaultIfEmpty(),再从这个结果中去取 重点就是into到集合,再DefaultIfEmpty()

4.9K10

sql连接查询on筛选与where筛选区别

就拿比普通增删查改稍微复杂一个层次连接查询来说, 盲目使用, 也会出现意料之外危险结果,导致程序出现莫名其妙BUG。...在连接查询语法,另人迷惑首当其冲就要属on筛选和where筛选区别了, 在我们编写查询时候, 筛选条件放置不管是在on后面还是where后面, 查出来结果总是一样, 既然如此,那为什么还要多此一举让...sql连接查询分为3种, cross join,inner join,和outer join , 在 cross join和inner join,筛选条件放在on后面还是where后面是没区别的...,极端一点,在编写这两种连接查询时候,只用on不使用where也没有什么问题。...当把 address '杭州' 这个筛选条件放在on之后,查询得到结果似乎跟我们预料中不同,从结果能看出,这个筛选条件好像只过滤掉了ext表对应记录,而main表记录并没有被过滤掉,

3.2K80

mysql,SQL标准,多表查询连接,外连接,自然连接等详解之查询结果集笛卡尔积演化

它实际返回连接表中所有数据行笛卡尔积,其结果集合数据行数等于第一个表符合查询条件数据行乘以第二个表符合查询条件数据行数,即10X11=110条记录。...自连接连接是指表与其自身进行连接,这需要使用表别名。 查询成绩存在不及格课程学生姓名,所在系,所有的课程及成绩信息。...缺点是,虽然可以指定查询结果包括哪些列,但是不能人为地指定哪些列被匹配。另外,自然连接一个特点是连接结果表匹配列只有一个。如上,在自然连接只有一列C。...从student表和teacher表查询学生姓名,所在系,所修本系教师开设课程课程号以及开课教师姓名。这时候就采用natural join对两个表进行自然连接。...可以这样表示: 全外连接=内连接+左边表失配元组+右边表失配元组 ?

2.5K20

sql连接查询

本文链接:https://blog.csdn.net/luo4105/article/details/51397825 一直没有注重于sql这一块,现在项目有大量统计,报表,以前都是多表连接或者用...mybatis延迟加载之类,这几天心血来潮自己查了一下,发现了sql子查询这个好东西,感觉方便多了,速度也快多了(自我感觉)。...sql查询是可以在把数据查出来后在查出一条其他表关联数据一项(多项或者多条都会报错), 比如我们要查询用户表(user)并加上一个列(rolename)表示它代表权限名字,那么我们可以这么写...,里面是当前时间,那么我们可以这么做 select *,(select rolename form role where roleId=user.roleId) as rolename,'2016-05...-13' as nowTime from user 这sql这几天真的写蛮开心,哈哈

3.3K20

【大数据】SparkSql连接查询谓词下推处理(一)

2.连接查询连接条件 Sql连接查询(join),主要分为内连接查询(inner join)、外连接查询(outter join)和半连接查询(semi join),具体区别可以参考wiki解释...那么谓词下推第二层含义,即何时完成数据过滤则一般是在指连接查询,是先对单表数据进行过滤再和其他表连接还是在先把多表进行连接再对连接临时表进行过滤,则是本系列文章要分析和讨论重点。...这个查询是一个内连接查询,join后条件是用and连接两个表过滤条件,假设我们不下推,而是先做内连接判断,这时是可以得到正确结果,步骤如下: 1) 左表id为1行在右表可以找到,即这两行数据可以...那么为什么where条件两表条件被or连接就会出现错误查询结果呢?...在这个查询,join后条件依然是使用OR连接两表过滤条件,不同是,join条件不再是id相等,而是value字段相等,也就是说过滤条件字段恰好就是join条件字段。

1.7K20

【大数据】SparkSql连接查询谓词下推处理(一)

2.连接查询连接条件 Sql连接查询(join),主要分为内连接查询 (inner join)、外连接查询 (outter join)和半连接查询 (semi join),具体区别可以参考wiki...那么谓 词 下 推第二层含义,即何时完 成数 据过滤则一般是在指连接查询,是先对单表 数 据进行过 滤再和其他表连 接还是在先把多表进行连接再对连 接后临 时表进 行过滤 4.内连接查询谓词下推规则...这个查询是一个内连接查询,join后条件是用and连接两个表过滤条件,假设我们不下推,而是先做内连接判断,这时是可以得到正确结果,步骤如下: 1) 左表id为1行在右表可以找到,即这两行数据可以...那么为什么where条 件两表条件被or连 接就会出现错误查询结果呢?...在这个查询,join后条件依然是使用OR连接两表过滤条件,不同是,join条件不再是id相等,而是value字段相等,也就是说过滤条件字段恰好就是join条件字段。

1.3K30

大数据 | SparkSQL连接查询谓词下推处理(二)

在《SparkSql连接查询谓词下推处理(一)》,我们介绍了一些基本概念,并对内连接查询一些基本下推规则进行了分析。...本篇文章要介绍是--外连接查询谓词下推规则,这相比内连接规则要复杂一些,不过使用简单表格来进行分析也是可以分析清楚。先上表: ? 我们以左外连接查询为例,先总结规矩如下: ?...来分析一下LT.id>1下推到左表进行数据过滤结果,经过LT.id>1过滤后,左表变为: ? 此时再和右表进行左连接,左表id为2行,在右表能找到id为2行,则连接结果如下: ?...很明显这其实是一个错误结果。 总结 至此,左连接查询四条规则分析完了。...可以看出,在SparkSQL对于外连接查询过滤条件,并不能在所有情况下都用来进行数据源过滤,如果使用得当会极大提升查询性能,如果使用不当,则会产生错误查询结果,而这种错误结果又不易发觉,所以使用时要格外小心

68130

【大数据】SparkSql连接查询谓词下推处理(一)

2.连接查询连接条件 Sql连接查询(join),主要分为内连接查询(inner join)、外连接查询(outter join)和半连接查询(semi join),具体区别可以参考wiki解释...那么谓词下推第二层含义,即何时完成数据过滤则一般是在指连接查询,是先对单表数据进行过滤再和其他表连接还是在先把多表进行连接再对连接临时表进行过滤,则是本系列文章要分析和讨论重点。...这个查询是一个内连接查询,join后条件是用and连接两个表过滤条件,假设我们不下推,而是先做内连接判断,这时是可以得到正确结果,步骤如下: 1) 左表id为1行在右表可以找到,即这两行数据可以...那么为什么where条件两表条件被or连接就会出现错误查询结果呢?...在这个查询,join后条件依然是使用OR连接两表过滤条件,不同是,join条件不再是id相等,而是value字段相等,也就是说过滤条件字段恰好就是join条件字段。

95920

大数据 | SparkSQL连接查询谓词下推处理(二)

在《SparkSql连接查询谓词下推处理(一)》,我们介绍了一些基本概念,并对内连接查询一些基本下推规则进行了分析。...本篇文章要介绍是--外连接查询谓词下推规则,这相比内连接规则要复杂一些,不过使用简单表格来进行分析也是可以分析清楚。先上表: ? 我们以左外连接查询为例,先总结规矩如下: ?...来分析一下LT.id>1下推到左表进行数据过滤结果,经过LT.id>1过滤后,左表变为: ? 此时再和右表进行左连接,左表id为2行,在右表能找到id为2行,则连接结果如下: ?...很明显这其实是一个错误结果。 总结 至此,左连接查询四条规则分析完了。...可以看出,在SparkSQL对于外连接查询过滤条件,并不能在所有情况下都用来进行数据源过滤,如果使用得当会极大提升查询性能,如果使用不当,则会产生错误查询结果,而这种错误结果又不易发觉,所以使用时要格外小心

89620

【MySQL】表查询连接

注:在分组查询,select 后面的列信息通常只能包含聚合函数以及出现在分组条件列。...笛卡尔积 笛卡尔积(Cartesian Product)是指在没有使用任何条件连接情况下,将两个或多个表每一行与其他表每一行进行组合,从而得到一个包含所有可能组合表。...where 子句对两种表形成笛卡儿积进行筛选,我们前面学习查询本质上也是内连接,内连接也是在开发过程中使用最多连接查询。...左外连接 左外连接是指左边表数据保持不变,右边表数据按照筛选条件过滤,记录不足列使用 NULL 填充,然后将二者连接起来。....* from dept left join emp on dept.deptno = emp.deptno; 右外连接 右外连接是指右外表数据保持不变,右外表数据按照筛选条件过滤,记录不足列使用

22020

一文搞定MySQL多表查询连接(join)

SQL最强大功能之一就是能在数据检索查询执行连接(JOIN)表。连接是利用SQLSELECT能执行最重要操作,很好地理解连接及其语法是学习SQL一个极为重要组成部分。...内连接分以下几种: 等值连接: 在连接条件中使用等于号(=)运算符比较被连接列值,其查询结果列出被连接所有列,包括其中重复列。...自然连接: 在连接条件中使用等于(=)运算符比较被连接列值,但它使用选择列表指出查询结果集合中所包括列,并删除连接重列。...内连接时,返回查询结果集合仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件行。...而采用外连接时,它返回到查询结果集合不仅包含符合连接条件行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)所有数据行。

14.1K20

SQL92、SQL99多表连接查询区别

SQL99多表连接查询 1. cross join(交叉连接) 交叉连接会产生一个笛卡尔积 select * from emp cross join dept; 在笛卡尔积, 有很多数据是无意义...外连接连接除了能显示满足连接条件数据以外, 还用于显示不 满足连接条件数据 左外连接 left [outer] join, 表示左外连接, 可以显示左表不满足 连接条件数据 select...right [outer] join, 表示右外连接, 可以显示右表不满 足连接条件数据 select e.ename, e.job, d.deptno, d.dname, d.loc from...emp e right join dept d on e.deptno=d.deptno; 全外连接 full [outer] join, 表示全外连接, 可以显示左右两表不满足连接条件数据...自连接是发生在同一个表格连接 a) 查询所有员工编号, 姓名和领导编号及姓名 select e1.empno, e1.ename, e2.empno, e2.ename from emp

2.1K10
领券