Oracle left join 查询 结果偏少
2015-05-26 16:17
225 查看
select t.instanceid,
t1.related_ne6,
t1.related_ne5,
t1.school_name,
t.cover_type,
'LTE' as net_type,
t1.resname,
t1.lac,
t1.ci,
t1.cell_id,
'重庆' as area,
'' as elses
from temp_school_zhc t1
left join uia_date_eutrancell t
on t1.ci||t1.cell_id=t.enodeb_id||t.eutrancell_id
/* t.enodeb_id = t1.ci
and t.eutrancell_id = t1.cell_id*/
where t.uia_time_id = 20150526
and t1.instanceid is null;
--and t1.ci||t1.cell_id is null;
--and t1.ci||t1.cell_id=160712
temp_school_zhc 表中instanceid为空的有2405条,可是查询结果之后只有2155条。left join之后为什么查询出来的数据偏少,原因为 where子句将left join之后的结果过滤掉了一部分。更改为如下之后查询的结果变为2405条了。
select t.instanceid,
t1.related_ne6,
t1.related_ne5,
t1.school_name,
t.cover_type,
'LTE' as net_type,
t1.resname,
t1.lac,
t1.ci,
t1.cell_id,
'重庆' as area,
'' as elses
from (select * from temp_school_zhc t where t.instanceid is null) t1
left join (select * from uia_date_eutrancell t where t.uia_time_id = 20150526) t
on t1.ci||t1.cell_id=t.enodeb_id||t.eutrancell_id
/* t.enodeb_id = t1.ci
and t.eutrancell_id = t1.cell_id*/
-- where t.uia_time_id = 20150526
--and t1.ci||t1.cell_id is null;
--and t1.ci||t1.cell_id=332111
虽然按照oracle的方式,where语句从下往上执行,可是执行的结果还是按照人的思维从上往下执行。
t1.related_ne6,
t1.related_ne5,
t1.school_name,
t.cover_type,
'LTE' as net_type,
t1.resname,
t1.lac,
t1.ci,
t1.cell_id,
'重庆' as area,
'' as elses
from temp_school_zhc t1
left join uia_date_eutrancell t
on t1.ci||t1.cell_id=t.enodeb_id||t.eutrancell_id
/* t.enodeb_id = t1.ci
and t.eutrancell_id = t1.cell_id*/
where t.uia_time_id = 20150526
and t1.instanceid is null;
--and t1.ci||t1.cell_id is null;
--and t1.ci||t1.cell_id=160712
temp_school_zhc 表中instanceid为空的有2405条,可是查询结果之后只有2155条。left join之后为什么查询出来的数据偏少,原因为 where子句将left join之后的结果过滤掉了一部分。更改为如下之后查询的结果变为2405条了。
select t.instanceid,
t1.related_ne6,
t1.related_ne5,
t1.school_name,
t.cover_type,
'LTE' as net_type,
t1.resname,
t1.lac,
t1.ci,
t1.cell_id,
'重庆' as area,
'' as elses
from (select * from temp_school_zhc t where t.instanceid is null) t1
left join (select * from uia_date_eutrancell t where t.uia_time_id = 20150526) t
on t1.ci||t1.cell_id=t.enodeb_id||t.eutrancell_id
/* t.enodeb_id = t1.ci
and t.eutrancell_id = t1.cell_id*/
-- where t.uia_time_id = 20150526
--and t1.ci||t1.cell_id is null;
--and t1.ci||t1.cell_id=332111
虽然按照oracle的方式,where语句从下往上执行,可是执行的结果还是按照人的思维从上往下执行。
相关文章推荐
- oracle使用LEFT JOIN关联产生的问题在查询结果中使用CASE WHEN 无法判断
- Oracle -- left join查询结果不是左表的全部数据的解决方法
- Oracle left join连接,一对多查询结果
- Oracle查询表结果添加到另一张表中
- Oracle中使用正则表达式过滤查询结果
- oracle 用lambda表达式查询和与原生态sql查询出来的结果不一样。
- oracle客户端plsql,sql语句查询的结果列表自动刷新功能
- oracle 查询结果用逗号隔开(非存储过程)
- oracle查询所有所有的表结构及字段描述等信息并plsql保存查询结果
- oracle查询结果中wmsys.wm_concat组合一列多行结果,以及每行中某些列的组合结果
- Oracle中把一张表查询结果插入到另一张表中
- SQL在oracle和SQLserver将查询结果创建为新表的不同之处
- Oracle查询每个员工领导名称,要求显示结果为:员工号,员工姓名 员工领导名
- oracle 查询结果对空值的排序
- Oracle中将查询的结果放入一张自定义表中的例子
- oracle在查询结果中附加一列的实现方法
- Oracle树形查询 ,结果显示一行
- Oracle - 为子查询提供动态结果集
- Oracle EBS R12 - 查询同一个表在不同用户下的同义词(XLA_TRANSACTION_ENTITIES)时返回的结果不一样
- Hibernate SQLQuery 查询Oracle char类型结果为一个字符的解决方法