情景:
现在有如图两个表,boy和girl,对应着Boy和Girl两个bean,有共同字段id、name,另外boy还有个外键grilfriend(指向girl的id)
现在要查询所有的Boy,如果有girlfriend的话就把girl的name也取出来,赋值给boy.girl.name
我写了一条SQL:”SELECT b.name,g.name FROM boy b , girlg WHERE g.id=b.girlfriend;”
问题:
因为有的boy有girlfriend,有的boy没有girlfriend,所以那些没有girlfriend的boy就不能跟girl表关联起来了
这样子查询只能查询出有girlfriend的boy
解决方案:
UNION
将SQL改成如下:
“SELECT b.name,g.name FROM boy b, girlg WHERE (b.girlfriend=g.id) and (isnull(b.girlfriend)=0) UNIONb.name,”null” from boy b where isnull(b.girlfriend)=1;”
利用组合查询
先判断boy.girlfriend存在与否,如果存在就取出bou.girlfriend.name,否则就不取出
JOIN
将SQL改成如下:
“SELECTboy.id,boy.name,girl.name FROM boy LEFT JOIN girl ON girl.id=boy.girlfriend;”
联合查询
总结
用JOIN的效率比用UNION要高,因为UNION相当于查询两次,JOIN是SELECT的时候先判断一下
分享到:
相关推荐
数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子...
Mybatis框架(子查询)
oracle笔记子查询,有子查询相关的知识点笔记和具体的案例代码!
在相关子查询中,子查询的执行依赖于外部查询,即子查询的查询条件依赖于外部查询的某个属性值。 执行过程:;在相关子查询中,子查询的执行依赖于外部查询,而嵌套子查询中,子查询的执行不依赖于外部查询。 执行...
子查询相关练习,子查询最好的文档。最好的文档有。
在SQL语言中,当一个查询语句嵌套在另一个查询的查询条件之中时,称为子查询。
复杂相关子查询 动画版
子查询是指一条SELECT语句作为另一条SELECT语句的一部分,外层的SELCT语句称为外部查询,内层的SELECT语句称为内部查询(或子查询).doc
sql 子查询应用 教你如何使用sql 子查询指令,含实例说明。
Hibernate 函数 ,子查询 和原生SQL查询。Hibernate 函数 ,子查询 和原生SQL查询
数据库的高级查询,子查询实例数据库的高级查询,子查询实例数据库的高级查询,子查询实例
分为四类介绍数据库子查询: 一、使用比较运算的子查询 二、使用all、any关键字的子查询 三、使用列表运算符的子查询(in 或者 not in) 四、使用exists运算符的子查询
ORACLE子查询
使用In的子查询.rar使用In的子查询.rar使用In的子查询.rar
hibernate子查询
数据库连接查询、子查询、嵌套查询、汇总数据
oracle表连接和子查询实例 所有的实例查询都包含在里面,不会担心笔试oracle子查询。
Oracle 子查询
oracle中的子查询使用场合,种类,使用方法,错误排除
oracle子查询学习教案.pptx