【发布时间】:2018-12-10 12:09:18
【问题描述】:
我已尝试搜索解决方案,但找不到任何解决方案。如有重复请指正方向。
[问题]
我想查询用户 ID 列表 (('hunter1', 'hunter2', 'hunter3')) 并检查他们是否同意我们的隐私政策。
但是,这里有一个问题 - 即使用户 ID 不在我们的数据库中,我也需要该用户 ID 为“N”的行来表示政策协议状态。
[原样:当前查询]
查询解释:单个用户 ID 可以有多个条目,因为该用户可能已经加入并离开并再次加入。 简单地说,如果可以多次找到该用户 ID,则此查询返回用户 ID 及其状态,其中该用户 ID 具有最高的序列号。
SELECT
userID,
policyAgreementStatus
FROM
MEMBERTABLE m
WHERE
userNoSeq IN (
SELECT
MAX(userNoSeq)
FROM
MEMBERTABLE
WHERE
m.userID = MEMBERTABLE.userID AND MEMBERTABLE.userID IN
('hunter1', 'hunter2', ...)
)
ORDER BY userNoSeq;
如果表中不存在“hunter1”,上述查询将返回如下内容。
userID policyAgreementStatus
-----------------------------------
hunter2 Y
hunter3 N
...
[未来]
我想要一个返回的结果:
userID policyAgreementStatus
-----------------------------------
hunter1 N
hunter2 Y
hunter3 N
即使 Hunter1 一开始不在桌子上。
我能想到的最简单的方法是创建一个临时表或使用 PL/SQL 集合并将其与原始表连接。
但是,我正在处理只读数据库,所以这是不可能。
任何想法都会有所帮助。谢谢。
【问题讨论】: