暂无图片
Oracle关于SQL条件判断的问题
我来答
分享
刘广
2021-11-08
Oracle关于SQL条件判断的问题
暂无图片 25M



不能使用等值连接,有没有大神能帮忙解答下,非常感谢~

我来答
添加附件
收藏
分享
问题补充
6条回答
默认
最新
DarkAthena

这题和前一题不一样了,前一题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
暂无图片
刘广
题主
2021-11-09
非常感谢您~
Uncopyrightable

直接创建索引就行,like 模糊查询“x%”也是能走索引的;

暂无图片 评论
暂无图片 有用 0
chengang

和你上一个问题一样啊。见我回答的你上一个问题。

暂无图片 评论
暂无图片 有用 0
刘广
题主
2021-11-08
不好意思,实际业务场景只能用条件判断
刘广

有没有专家能给个思路也行呀   这个sql只是整个sql的一个小部分嵌套进去的

暂无图片 评论
暂无图片 有用 0
chengang

我不明白 union 合并的为啥就不能放到一个SQL中去。   

暂无图片 评论
暂无图片 有用 0
刘晓华

表设计有问题

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏