我有一个问题,我在我的数据库中运行一个不存在的查询
Description SUBMITTER
---------------------------
General worklog U1
Scope U1
Email-Out U2
General worklog U3
planning U3
我的查询是:
SELECT chg.CHANGE_ID,
chg.USER
FROM dbc as chg
WHERE chg.USER in ('U1')
and NOT EXISTS (SELECT logs.Description
from db as logs
WHERE
logs.CHANGE_ID = chg.CHANGE_ID
and
(
(logs.DESCRIPTION LIKE 'Email-O%'
and
logs.SUBMITTER in ('U1','U3'))
or
logs.DESCRIPTION like 'Scope'
))
我要做的是找到U1或U3没有“Email-O”的情况,或者没有范围说明。
对于我正在运行的查询,我得到的结果没有Email-O但是如果U1或U3有另一个条目,它会丢弃结果。
实际上,我正在尝试将Email-O明确地绑定到任意数量的用户,但出于某种原因,它没有按预期工作。
感谢帮助?
根据更新后的查询输出
如果我选择logs.SUBMITTER in ('U1','U3')
我返回的值少于选择logs.SUBMITTER in ('U1')
时的值。我相信这是因为logs.SUBMITTER值没有明确地绑定到'Email-O'的logs.DESCRIPTION值,因此U3输入的值是'planning',这是在丢弃结果。
答案 0 :(得分:0)
您的问题看起来像缺少括号,请尝试此操作。
SELECT *
FROM dbc as chg
WHERE chg.USER in ('U1','U3')
and NOT EXISTS (SELECT logs.Description
from db as logs
WHERE
logs.CHANGE_ID = chg.CHANGE_ID
and (
( ( logs.DESCRIPTION LIKE 'Email-O%'
and logs.SUBMITTER in ('U1','U3'))
or logs.DESCRIPTION like 'Scope' )
))
答案 1 :(得分:0)
and NOT EXISTS ( SELECT 1
from db as logs
WHERE logs.CHANGE_ID = chg.CHANGE_ID
and ( ( logs.DESCRIPTION LIKE 'Email-O%' and
logs.SUBMITTER in (U1,U3)
)
or logs.DESCRIPTION like 'Scope'
)
)
这是您的罪魁祸首logs.CHANGE_ID
,但您不会将其包含在数据中,也不包括chg