当前位置: 首页 > 面试题库 >

在where条件中具有所有必需值的Oracle SQL查询

西门安歌
2023-03-14
问题内容

我想在ORACLE中编写一个选择查询,该查询仅在条件存在的情况下给出的所有值都将返回记录。例如

select * from emp where empid in (7521,7566,7698)

现在,我想编写此查询,以便仅在所有3个empid存在时才返回值。它将类似于AND条件,即empid = 7521和empid = 7566以及empid
=7698。如果不存在任何一个值,则此查询不应获取任何行。


问题答案:

Lukas版本的扩展,您只需编写一次ID:

with emp_ids as (
   select 7521 as eid from dual
   union all 
   select 7566 from dual
   union all
   select 7698 from dual
)
select * 
from (
  select emp.*, 
         count(*) over() as cnt
  from emp_new emp
  where empid in (select eid from emp_ids)
)
where cnt = (select count(*) from emp_ids);

在这些情况下,我总是会错过其他DBMS中可用的标准行构造函数,在这里我可以简单地编写VALUES (7521), (7566), (7698)以生成具有所需值的虚拟表,而无需使用DUAL …



 类似资料:
  • 问题内容: 我有一个文件,其中列出了我的虚拟环境所需的软件包。是否有可能找出文件中提到的所有软件包是否都存在。如果缺少某些软件包,如何找出丢失的软件包? 问题答案: 更新 : 进行更新和改进的方法是通过。有关详细信息,请参见下面的Acumenus答案。 原文 : 这样做的pythonic方法是通过 API。要求以setuptools可以理解的格式编写。例如: 示例代码:

  • 我尝试在数据帧“df_energy”中添加一个新的列“energy_class”,如果“consumpion_energy”值为 有什么办法可以帮我吗? 先谢谢你

  • 问题内容: 我正在重新编写一些PHP代码以使用PDO进行数据库访问,但是我遇到了“ WHERE … IN”查询问题。 我正在尝试根据检查表单上的哪些项目从数据库中删除某些内容。列表的长度和内容将有所不同,但是对于此示例,请想象是这样的: 然后查询如下所示: 当我这样做时,仅第一个ID被删除。(我认为它会抛出逗号及其后的所有内容。) 我也尝试过制作一个数组,但是它不会删除任何东西。 在PDO准备好的

  • 问题内容: 考虑这样的一张桌子 问题是,如果我给定值2和5,我应该得到102和105,而102和105都同时具有值​​2和5,或者如果我给定值1和3,我应该得到100和104。 我如何仅用一个sql命令就能做到这一点?我需要一个尽可能轻的查询。 并使用UNION,INTERSECTION或NESTED SQL,哪个更快,更慢,更重? 在此先感谢Ergec 问题答案: 有很多解决方案。除了Jhonn

  • 我正在尝试从技能作业表中删除一行 以下是我的疑问 但它抛出以下错误; 致命错误:未捕获的异常'异常'消息'您有一个错误在您的SQL语法;检查手册,对应于您的MySQL服务器版本的正确的语法使用附近'skj内连接作业j上<--plhd--0/<--#############################################################################

  • WHERE 语句 SQL中使用where可能会有一些不安全的动态参数传入或者一些复杂的SQL语句,但是Medoo提供非常简介和安全的方法来实现这些. 基础使用 在基础使用中. 你可以使用一些符号对参数进行过滤 $database->select("account", "user_name", [ "email" => "foo@bar.com"]);// WHERE email = 'foo