sql - Oracle 查询中的条件 WHERE EXISTS
问题描述
甲骨文在这里。我有下表:
create table Foobars (
id integer constraint pkFoobars primary key using index,
fizz varchar2(20 char),
buzz varchar2(20 char)
)
在我的代码中,我将得到一个名为 的字符串fizzOrBuzz
,我不会提前知道哪个字段(fizz
或)。buzz
我需要在Foobars
表中搜索匹配或基于值。唯一可以确定的是没有重复项(没有 2 条记录具有相同的值,也没有 2 条记录具有相同的值)。fizz
buzz
fizzOrBuzz
fizz
buzz
到目前为止我的查询:
SELECT
id
FROM
Foobars
WHERE EXISTS (
SELECT
id
FROM
Foobars
WHERE
fizz = ? -- fizzOrBuzz gets injected here by the app layer
) OR (
SELECT
id
FROM
Foobars
WHERE
buzz = ? -- fizzOrBuzz gets injected here by the app layer
)
但是,这不是有效的 SQL 代码(不执行),我确信有更好的方法来完全做到这一点。有任何想法吗?
解决方案
为什么不直接使用OR
?
select id
from foobars
where fizz = ? or buzz = ?;
或者,只使用一个参数IN
:
select id
from foobars
where ? in (fizz, buzz);
推荐阅读
- c# - 如何使用 Bot Framework 在 Teams 中与自适应卡片一起添加提及
- awkward-array - 在笨拙数组备份的子集上传播选择
- c - Scheme 到 C 的翻译器
- mockito - 使用给定参数返回带有 Mockito 的模拟对象
- axapta - 在声明中更改allowedit
- typescript - 在 TypeScript 中使用数据库的 Firebase 管理员
- javascript - @babel/preset-env 没有从 package.config 中读取 browserslist
- php - SyntaxError:JSON.parse:在 json 输出中使用 URL 时需要
- swift - 使用 RxSwift 的反应式异步反馈系统
- javascript - 以不同的顺序在断点处重新组织网格 - html css 和 js