IN改写关联注意事项!
SQL> select * from a1; ID NAME
---------- ----------
1 a
2 a SQL> select * from a2; ID NAME
---------- ----------
1 a
3 a SQL> select * from a1 where id in (select id from a2); ID NAME
---------- ----------
1 a 改写成关联:
SQL> select * from a1,a2
2 where a1.id= a2.id; ID NAME ID NAME
---------- ---------- ---------- ----------
1 a 1 a 此时是因为(select id from a2)子查询只返回一条记录,那么子查询返回多条呢?
SQL> select * from a2; ID NAME
---------- ----------
1 a
3 a
1 a SQL> select * from a1 where id in (select id from a2); ID NAME
---------- ----------
1 a SQL> select a1.* from a1,a2
2 where a1.id= a2.id; ID NAME
---------- ----------
1 a
1 a 此时是不是出现重复数据了?
继续测试:
SQL> select * from a1; ID NAME
---------- ----------
1 a
2 a
1 a SQL> select * from a2; ID NAME
---------- ----------
3 a
1 a SQL> select * from a1 where id in (select id from a2); ID NAME
---------- ----------
1 a
1 a SQL> select a1.* from a1,a2
2 where a1.id=a2.id; ID NAME
---------- ----------
1 a
1 a 结论:IN改写关联时,如果子查询返回多条记录,需要去从。 测试2:
SQL> select * from a1; ID NAME
---------- ----------
1 a
2 a
1 a SQL> select * from a2; ID NAME
---------- ----------
2 a
3 a
3 a
1 a
1 a SQL> select * from a1 where a1.id in (select id from a2); ID NAME
---------- ----------
2 a
1 a
1 a SQL> select a1.* from a1 ,a2
2 where a1.id=a2.id; ID NAME
---------- ----------
2 a
1 a
1 a
1 a
1 a 正确写法:
SQL> select a1.* from a1 ,(select id from a2 group by id) a2
2 where a1.id=a2.id; ID NAME
---------- ----------
1 a
2 a
1 a
子查询里面的 关联列没有重复数据 可以直接改In,如果关联列有重复数据需要去从
IN改写关联注意事项!的更多相关文章
- not in改写关联无需考虑重复数据
SQL> select * from a1; ID NAME ---------- ---------- 1 a 1 a 2 a 3 a SQL> select * from a2; ID ...
- odoo14 入门解刨关联字段
Odoo中关联字段是用来绑定表与表之间主从关系的. 主从关系指: 首先必须要明白id的存在的意义,它具备"唯一"的属性,也就是表中所有记录中该字段的值不会重复. 假设表A存储是身份 ...
- SQL Server控制执行计划
为了提高性能,可以使用提示(hints)特性,包含以下三类: 查询提示:(query hints)告知优化器在整个查询过程中都应用某个提示 关联提示:(join hints)告知优化器在查询的特定部分 ...
- 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明
一.首先了解下Entity Framework 自动关联查询: Entity Framework 自动关联查询,有三种方法:Lazy Loading(延迟加载),Eager Loading(预先加载) ...
- Hibernate criteria 混合sql语句多表关联时查询注意事项
直接进入正题 假设有一个实体类 /** * 产品分类 */ public class ProductType{ @Id private String no;//编号 private String na ...
- (原创)Hibernate 使用过程中(尤其是多对多关联中的级联保存和级联删除)的注意事项(基于项目的总结)
一.先上知识点: 1.hibernate多对多关联关系中最重要的参数是(基于配置文件xxx.hbm.xml文件形式): 1):inverse属性,如果设置inverse=“true”就代表让对方参与维 ...
- MySQL数据库 crud语句 ifnull() 创建新账户 备份数据库 一对多关系 多对多(中间表) 外键约束 自关联 子查询注意事项 DML DDL DQL mysql面试题 truncate与delete的区别
DML(data manipulation language): 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 DDL ...
- LODOP关联,打印项序号注意事项
之前也有介绍过打印项序号:Lodop打印控件里SET_PRINT_STYLE和SET_PRINT_STYLEA如果是个给打印项添加样式,最常用的是SET_PRINT_STYLEA(0.....),第一 ...
- WEKA使用(基础配置+垃圾邮件过滤+聚类分析+关联挖掘)
声明: 1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Windows系统下的WEKA,实验内容主要有三部分,第一是分类挖掘(垃圾邮件过滤),第二是聚类分析, ...
随机推荐
- Mysql Join语法解析与性能分析详解
一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1 ...
- python 函数初识和文件操作
文件操作 打开文件:文件句柄 = open('文件路径', '模式') 打开文件的模式 w #以写的方式打开 (不可读,不存在则创建,存在则删除内容) a #以追加的模式打开(可读, 不存在则创建 ...
- apache安全之修改或隐藏版本信息
修改apache版本信息 在安装之前,编辑原文件httpd-2.2.31/include/ap_release.h文件如下: 40 #define AP_SERVER_BASEVENDO ...
- Java动态调用webService,axis2动态调用webService
Java动态调用webService axis2动态调用webService >>>>>>>>>>>>>>>& ...
- Redis Windows版安装及简单使用
1.Redis简介及优势 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. 特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次 ...
- SharePoint Attachement操作代码
下载文件 如果下载其它类别的文件: SPSecurity.RunWithElevatedPrivileges(].ToString(); swi ...
- Java-struts2 之值栈问题
这里是根据一个小项目,将数据库的值查出来,然后在页面前台进行遍历的方法 放入值的几种方式: Struts2的三种存值取值的方式 值栈: 栈上下文: ActionContext: package com ...
- 校省选赛第一场D题TwoDecks题解
今天晚上第二场比赛,现在还是赛后刷上次的题目,越刷越伤心,发现我赛后一次AC的功力很强大啊!!!(希望今晚变成是赛中一次AC啊!!) 好啦,回归正题. 看题目 D. Merging Two Decks ...
- ACM Sdut 2158 Hello World!(数学题,排序) (山东省ACM第一届省赛C题)
题目描述 We know thatIvan gives Saya three problems to solve (Problem F), and this is the firstproblem. ...
- 说说http请求
为什么做web前端要了解http标准?因为浏览器要从服务端获取网页,网页也可能将信息再提交给服务器,这其中都有http的连接.web系统既然和http链接有瓜葛,你就必须去了解它.我将从一下几个方面讲 ...