先说一些今天处理问题的时候发现了左外连接的新的写法方式啊,不知道大家见过没,不过这个是很好理解的
select r.*,c.* from t_tsjb_result r
left join t_d6_complaint c
on c.comcon = r.comcon,
(select t.dicode, t.diname
from t_d1_dic_item t
where t.dtid = '518959eac5cf4325bb618e6289ca9f77') tsfl,
(select t.dicode, t.diname
from t_d1_dic_item t
where t.dtid = 'b6eb358ea76c4b2191a5dd72d14dcad7') dcjg
where r.comtype = tsfl.dicode
and r.dealresult = dcjg.dicode
and r.unitName like '%堂子街%'
and r.orgid in ('9cbf2330e17941828bfc04ce8bf04aca')
order by r.creattime
上面这个是我出错的SQL语句,也不是出错了,就是左外连接关联查询的时候查不出数据来,然后我改了一些连接位置,再具体的关联限制上使用(+)就可以查出数据了,下面我把SQL贴出来大家看看应该很好理解的
select r.*,c.* from t_tsjb_result r,t_d6_complaint c,
(select t.dicode, t.diname
from t_d1_dic_item t
where t.dtid = '518959eac5cf4325bb618e6289ca9f77') tsfl,
(select t.dicode, t.diname
from t_d1_dic_item t
where t.dtid = 'b6eb358ea76c4b2191a5dd72d14dcad7') dcjg
where r.comcon = c.comcon(+)
and r.comtype = tsfl.dicode(+)
and r.dealresult = dcjg.dicode(+)
and r.unitName like '%堂子街%'
and r.orgid in ('9cbf2330e17941828bfc04ce8bf04aca')
order by r.creattime
这个只需要在一些关联的表的限制字段后面加(+)就可以了
select * from
TBWData w , TBFeeDataD d
where w.ID0 *= d.WaterID and w.ID0=1000000131 and d.FeeType=2
select * from
TBWData w left join TBFeeDataD d on w.ID0=d.WaterID
where w.ID0=1000000131 and d.FeeType=2
结果显示:第一条查得出结果,第二条查不出结果。
第二条换成:
select * from
TBWData w left join TBFeeDataD d on w.ID0=d.WaterID and d.FeeType=2
where w.ID0=1000000131
便可以查出结果。
因为where 后的条件是对
唉~想必大家能看出来我是一个逗号没加,,这个教训也提醒我们要时刻注意细节。大概的内容就是这些了,有什么不足的地方欢迎大家我交流交流。