问题描述
你好
我有一张这样的表
我需要一个select来根据NTYPE (1到N) 列表获取所有id,但是如果任何NTYPE列表不存在,则获取NTYPE = 0 ..
例如:
如果NTYPE list = 1,则id必须为3
如果NTYPE list = 1,2,则必须3,4 id
如果NTYPE list = 2,3,则id必须1,2,4...1和2,因为在ntype = 3的地方没有记录,然后在NTYPE = 0的地方得到...
我可以做一个可以做到这一点的程序,但我想在一个选择
有可能吗?有什么想法吗?
提前感谢
我有一张这样的表
ID NTYPE 1 0 2 0 3 1 4 2复制
我需要一个select来根据NTYPE (1到N) 列表获取所有id,但是如果任何NTYPE列表不存在,则获取NTYPE = 0 ..
例如:
如果NTYPE list = 1,则id必须为3
如果NTYPE list = 1,2,则必须3,4 id
如果NTYPE list = 2,3,则id必须1,2,4...1和2,因为在ntype = 3的地方没有记录,然后在NTYPE = 0的地方得到...
我可以做一个可以做到这一点的程序,但我想在一个选择
有可能吗?有什么想法吗?
提前感谢
专家解答
所以你想加入每个输入值到ntype和:
-如果存在,则返回相应的id
-如果不是,则ntype 0的id?
如果是这样,您可以通过将您的输入作为表传递来做到这一点。然后在值等于ntype的地方加入。或者ntype为零。并且表中没有其他行与输入匹配的ntype匹配。
这给出了类似的东西:
-如果存在,则返回相应的id
-如果不是,则ntype 0的id?
如果是这样,您可以通过将您的输入作为表传递来做到这一点。然后在值等于ntype的地方加入。或者ntype为零。并且表中没有其他行与输入匹配的ntype匹配。
这给出了类似的东西:
create table t ( id int, ntype int ); insert into t values ( 1, 0 ); insert into t values ( 2, 0 ); insert into t values ( 3, 1 ); insert into t values ( 4, 2 ); commit; with inputs as ( select 1 n from dual ) select t.id from t join inputs i on t.ntype = i.n or ( t.ntype = 0 and not exists ( select * from t t2 where t2.ntype = i.n ) ); ID 3 with inputs as ( select 2 n from dual union all select 1 n from dual ) select t.id from t join inputs i on t.ntype = i.n or ( t.ntype = 0 and not exists ( select * from t t2 where t2.ntype = i.n ) ); ID 4 3 with inputs as ( select 2 n from dual union all select 3 n from dual ) select t.id t join inputs i on t.ntype = i.n or ( t.ntype = 0 and not exists ( select * from t t2 where t2.ntype = i.n ) ); ID 4 1 2复制
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
623次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
610次阅读
2025-04-15 17:24:06
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
508次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
494次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
471次阅读
2025-04-22 00:20:37
Oracle 19c RAC更换IP实战,运维必看!
szrsu
447次阅读
2025-04-08 23:57:08
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
442次阅读
2025-04-22 00:13:51
一页概览:Oracle GoldenGate
甲骨文云技术
440次阅读
2025-04-30 12:17:56
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
436次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
389次阅读
2025-04-17 09:30:30