首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果没有结果,那么另一个查询,可以组合成一个查询吗?

如果没有结果,那么另一个查询,可以组合成一个查询吗?
EN

Stack Overflow用户
提问于 2016-08-24 05:17:08
回答 3查看 49关注 0票数 0
代码语言:javascript
复制
Phone_book
+----+---------+-----------+--------------+
| id | key     | code      |    value     |
+----+---------+-----------+--------------+
| 1  | MAX_VAL | 111       |    reset     |
+----+------+--------------+--------------+
| 2  | MIN_VAL | 222       |    set       |
+----+------+--------------+--------------+
| 3  | MIN_VAL | 0         |    NA        |
+----+---------+-----------+--------------+

键和代码组合是主键。

要求:

如果存在键和代码,则返回值。

如果存在键,而代码不存在,则返回代码0的值。

Implementation:

通过使用多个查询实现了这一点。用于JPQL的语法

1) "SELECT param FROM Phone_book param WHERE upper(key)=:paramKey AND code=:estCode";

如果这返回null,则拍摄另一个查询。

2) "SELECT param FROM Phone_book param WHERE upper(key)=:paramKey AND code=:O";

我要找的东西:

我可以通过一个查询或更好的方法来实现这一点吗?

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2016-08-24 07:18:19

在Oracle SQL中,以下内容将满足您的需要。无需为此编写PLSQL。

代码语言:javascript
复制
SELECT key,
       nvl(code,0)                            -- This will make sure if code is null then value is 0
FROM Phone_book  
WHERE (key is not NULL AND CODE IS NOT NULL)  -- This will help in fetching value when KEY and CODE is present
OR ( key is not null and code is null);       -- This will help in fetching value  when KEY is present and CODE is null. 
票数 2
EN

Stack Overflow用户

发布于 2016-08-24 08:03:35

代码语言:javascript
复制
select 
case 
   when key is not null and code is not null then value
   when key is not null and code is null then 0
end 
from phone_book;
票数 0
EN

Stack Overflow用户

发布于 2016-08-24 11:03:22

代码语言:javascript
复制
select value from (
  select value, row_number() over (order by case when code = 0 then 2 else 1 end) rn
    from phonebook pb 
    where upper(key) = :paramKey and (code = :estCode or code = 0))
  where rn = 1

选择已请求键和请求的代码或代码0的值。用函数row_number对它们进行适当排序,并取第一个值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39114937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档