Oracle关于SQL条件判断的问题
25M
不能使用等值连接,有没有大神能帮忙解答下,非常感谢~
我来答
添加附件
收藏
复制链接
微信扫码分享
在小程序上查看
分享
添加附件
问题补充
6条回答
默认
最新
这题和前一题不一样了,前一题deptno不会重复,这一题有重复的,另外location前面多拼接了一个字符。
如果这是生产环境的话,建议尽早改了,deptno的唯一性竟然还要靠其他字段的字符串截取识别,后面业务扩张在结构上会遇到灾难性的问题。
如果你非要这么做,那么解法还是和前面差不多,重点在于找到相等的匹配值,
EMP表要把A/B截取成一个字段,dept表也要把A/B截取成一个字段,
然后以新的EMP为主表,外关联另外的DEPT表,以dept_no和A/B做关联
select e.*,nvl(a.location,b.location) from
(select substr(ename,1,1) type, e.* from emp e) e,
(select substr(location,1,1) type,a.* from dept_a) a,
(select substr(location,1,1) type,b.* from dept_b) b
where e.deptno=a.deptno(+)
and e.deptno=b.deptno(+)
and e.type=a.type(+)
and e.type=b.type(+);
极度不建议使用此种方式横着排dept_a、dept_b!!未来有c/d/e/f/g怎么办?
这个就该用union all竖着排这些表,把这些小表union all成一个大表,作为一个维表(有些公司叫码表),然后再和这个表关联查询
评论
有用 0
直接创建索引就行,like 模糊查询“x%”也是能走索引的;
评论
有用 0我不明白 union 合并的为啥就不能放到一个SQL中去。
评论
有用 0回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

