首页 > 解决方案 > SQL查询选择结果依赖于两个值

问题描述

我有一个问题,我在我的数据库中运行一个不存在的查询

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”值时,这将删除一个结果。

标签: sqlsql-server

解决方案


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


推荐阅读