如果在 Oracle 中不存在

蘇尼爾·巴馬爾

我是 Oracle 的新手,需要一些幫助來了解 Oracle 中 SQL Server 的IF NOT EXISTS等效項。如果特定角色不存在,我需要根據實體編號從 Role 表中找到最大 RoleID。我創建了下面的查詢,但它失敗(如果實體具有特定角色,它應該返回 null,如果實體沒有角色,它應該返回 1,如果實體沒有任何角色,它在兩種情況下都返回 1)。

代碼:-

SELECT NVL(MAX(role_id), 0) + 1 AS RoleID from roles WHERE entity_no = '000001'
AND
    NOT EXISTS (
        SELECT 1
        FROM roles
        WHERE entity_no = '000001' AND name = 'Survey'
    )

如果實體沒有任何角色,我需要 1 作為 RoleID,但它應該為具有該特定角色的實體返回 null('Survey'),否則返回最大 RoleID 增量,TIA。

小腳怪

這行嗎?閱讀代碼中的註釋。

  • entity_no = 00001 有調查,所以查詢應該返回 NULL
  • entity_no = 00002 沒有 Survey,所以查詢應該返回 1

SQL> with
  2  roles (role_id, entity_no, name) as
  3  -- sample data
  4    (select 1, '00001', 'Survey' from dual union all
  5     select 2, '00002', 'xxx'    from dual
  6    ),
  7  temp as
  8  -- does ENITITY_NO has role for NAME = Survey? If so, CNT = 1; else, CNT = 0
  9    (select entity_no,
 10            sum(case when name = 'Survey' then 1 else 0 end) cnt
 11     from roles
 12     group by entity_no
 13    )
 14  -- finally, check CNT value and return the result
 15  select case when t.cnt = 0 then 1 else null end as role_id
 16  from roles r join temp t on t.entity_no = r.entity_no
 17  where r.entity_no = '&par_entity_no';
Enter value for par_entity_no: 00001

   ROLE_ID
----------


SQL> /
Enter value for par_entity_no: 00002

   ROLE_ID
----------
         1

SQL>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果在 Oracle 上插入或更新不存在

SELECT 如果在 DATE=TODAY 存在,如果在 DATE=YESTERDAY 不存在

如果存在则更新,如果在MySQL中不存在则插入行

如果存在则更新多个数据,如果在laravel中不存在则创建

如果在表中不存在MySQL查询得到B表数据

如果在两个列表的比较中不存在,则添加列表元素

如果在使用 postgres 的休眠中不存在,如何进行高性能插入?

如果在选择时不存在在口才数据库中创建记录,

如果在SELECT查询后SQL中不存在行,如何显示错误消息?

如果在 SQL Server 中不存在特定条件,如何检索数据?

Symfony 3.4 - 如果在多对多关系中不存在则坚持

Oracle - 如果不存在如何插入?

如果在Java中 如果在C ++中

如果在 Oracle 中没有选择行,则在列中返回 0

如果在一行中,则Oracle SQL多重计数

如果在 Oracle 中传递参数,实体框架查询会变慢

如果在Oracle SQL中插入null,则设置一个值

如果在 oracle 函数中,为什么 oci_bind_by_name 不起作用

如何检查目录是否存在,如果在Rust中不存在,则创建一个新目录?

Oracle存储过程,如果目标中不存在值,则可从查询中插入值

如果尚不存在,如何在Oracle PL / SQL中创建新的对象类型

使用select和join在Oracle SQL中创建表如果表不存在

如果在MySQL中的group by语句中不存在值,如何显示0个计数?

如果在创建 df pandas python usecols 时不存在,则跳过列

haskell如果在读取之前不存在,则将其写入文件

如果在Ruby中使用File类不存在目录,如何创建目录?

如果在使用sed冒号后不存在任何数据,则删除记录

如果在SWITCH语句中存在

如果在Oracle 11g xe中通过排序和触发器生成,则限制PK的输入