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,实验内容主要有三部分,第一是分类挖掘(垃圾邮件过滤),第二是聚类分析, ...
随机推荐
- UIWindow详解
UIScreen(屏幕),UIWindow(窗口),UIView(视图)是iOS的几个基本界面元素.其中UIWindow(窗口)和UIView(视图)是为iPhone应用程序构造用户界面的可视组件.U ...
- xshell连接本地Linux虚拟机!
终端输入ifconfig获取本地虚拟机的IP地址; 安装openssh-server sudo apt-get install openssh-server 查看server是否启动: ps -ef ...
- Linux bash中的变量分类
1.本地变量 VAR=XYZ 2.局部变量 local VAR=XYZ 3.环境变量 在子shell中可以起作用 export VAR=XYZ 4.位置变量 $0 脚本名本身 $1 第一个参数 $2 ...
- Jquery Ajax方法传递json到action
ajax向后台传入json需要设置option,如下 contentType:'application/json' data:Json.Stringify(jsObj) 后台处理复杂json对象(不知 ...
- HDOJ-1754(简单线段树)
最近开始重新学习线段树,先从最简单的开始吧! I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 ...
- 随便说一说bootstrap-table插件
如题... bootstrap-table插件是一个js的表格插件 找了一下资料发现并没有多少 这里放一下初始化的语法 这里在html中写一个目标table元素 <table id=" ...
- 当前时间 js
当前时间-倒计时下载 效果: 代码: <!doctype html> <html> <head> <meta http-equiv="Content ...
- Oracle 检验身份证是否正确的存储过程
) ) ); ); ); ); ); ); ); ; , , , , , , , , , , , , , , , , , ); ; , ) ); .. loop )) ) ); , )), ), ...
- 快速消除IOS 版本升级带来的警告
开发中我们经常会遇到这样的情况,我们在IOS 6.0开发的程序,当出现IOS 7.0 或者IOS8.0的时候,我们代码中得某些方法苹果已经不推荐使用了,建议我们改用新的方法.如果我们不更新方法,则会出 ...
- 原生JavaScript 获取下一个/上一个同胞元素
看JavaScript遇到的问题,研究了下 获取上一个或者下一个同胞元素,使用很多人会立马想到JQuery prev() 和 next() 的确非常方便.那么原生的JavaScript该怎么获取 上 ...