暂无图片
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
打赏 0
暂无图片
刘广
题主
2021-11-09
非常感谢您~
Uncopyrightable

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

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

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

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

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

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

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

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

表设计有问题

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
为什么pl/sql中和sqlplus中看到的字段属性不一致,FD_AI,FD_THEME sqlplus显示可为空,pl/sql显示不可为空
回答 2
在create table时,如果你的not null约束不是直接写在字段后面, 而是通过check或constraint子句增加的, 通过sqlplus都不会
请问一下为何我查询A用户17年下半年的数据总量是1955 但是我分月查询 7-12月怎么总量对不上
回答 3
你分月查询时,时间没有包含完整。应该查询时指定到月末最后一天的23:59:59才对
system表空间下这些对象都是什么?
回答 2
SYSLOBidentifier$$的段,可以使用DBALOBS视图找出该LOB列映射到哪个表的哪一列
RMAN-06018: duplicate operand specified in backup specification: DFORMAT
回答 3
Error:RMAN06018duplicateoperandspecifiedinbackupspecification:%sCause:Abackupspecificationoperandapp
oracle数据库按时间查询时,在某一时间段中数据库中没有数据,如何让数据显示为零?
回答 2
已采纳
nvl函数
把一个Oracle的实例克隆一份到另一个服务器,做法有哪几种?
回答 1
目的是什么?复制软件还是数据?
oracle11g单库 rman备份还原到rac 数据库报错
回答 2
好的,谢谢。我说怎么弄过几次都是报错。
Oracle 有一个分区表共3个分区(分别为p1,p2,p3),可以单独授p3这个分区的查询权限给另一个用户吗?
回答 7
Oracle只能是对象级别的授权,整个分区表是一个对象,不能按照分区授权。如果你非要这么做可以将这个分区创建一个视图,然后把这个视图的权限授予普通用户。
Oracle 11g, 想建立一个分区表,而分区字段是一个VARCHAR类型的字段,因此不能用范围分区。打算采用列表分区,不希望每次进行表结构修改,因为分区字段是数据实际是20211027这样日期数据,再加上业务原因不能进行表结构修改。
回答 2
已采纳
VARCHAR类型的字段是支持范围分区的,参考此例https://www.modb.pro/issue/10548
oracle 普通用户登录hang 住
回答 4
很有可能你的库在2月4日22点前已经不正常了,到22:00时mmon也不能正常工作了。而你5日下午15:00才发现问题后重启了库。4日21:54的ora1578报错可能和坏块有关系。建议上传完整的al