sql - 如何将Oracle SQL中具有相同值的多个列与OR进行比较
问题描述
我有以下查询,我将多个列与相同的子查询进行多次比较。有没有办法只调用一个子查询与多列进行比较。我知道AND是可能的,但OR是否可能。
select * from catalog
where
APPROVER_USER=(select usr_key from usr where usr_login='abcd')
or CERTIFIER_USER =(select usr_key from usr where usr_login='abcd')
or FULFILLMENT_USER =(select usr_key from usr where usr_login='abcd')
;
解决方案
您似乎正在user_key
根据特定用户在子查询中进行比较。似乎根本不需要这张usr
桌子:
select c.*
from catalog c
where 437391 in (c.APPROVER_USER, c.CERTIFIER_USER, c.FULFILLMENT_USER);
编辑:
对于修改后的问题,我建议join
:
select c.*
from catalog c join
users u
on u.usr_login = ? and
u.user_key in (c.APPROVER_USER, c.CERTIFIER_USER, c.FULFILLMENT_USER);
推荐阅读
- javascript - 服务器响应后如何再次触发指令
- php - PHP登录页面不适用于password_verify
- c# - 如何将列表从控制器/视图发送到 JS 脚本
- c# - 如何使用 C# 中的方法在列表中添加数据?我正在尝试添加,但它不能保存数据并且只显示最后一个条目
- java - 带有嵌入式 id 的实体的带有 Spring Boot DDL 查询错误的 Wix 嵌入式 mysql
- jenkins - 基于 git commit 的 Jenkinsfile 管道触发阶段
- android - Android Studio 中导航抽屉预览中的渲染问题
- firebase-realtime-database - 颤动如何使gridview显示像按钮这样的firebase数据
- applescript - 错误:命令失败:osascript -e 告诉应用程序“系统事件”计算名称为“模拟器”的进程 (-1743)
- javascript - 当我按下滚动按钮时,如何限制骰子(3-d 类型)仅滚动三次,并且每次滚动时还需要骰子的值