SQL在或条件中显示错误记录

SQL在或条件中显示错误记录,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正在努力为下面的场景编写查询,有人能帮我吗 我有两列错误和优先级都是数字字段。需要根据条件提取。例如,如果我从UI屏幕中选择值3,它必须在表中查找记录 如果任何列中的值匹配,我必须返回我这样写的记录 Select * FROM WorkItems WHERE [System.Title] like '%defect%' AND [System.WorkItemType] in ('Incident','bug') AND [ErrorClass] =3 OR

我正在努力为下面的场景编写查询,有人能帮我吗

我有两列错误和优先级都是数字字段。需要根据条件提取。例如,如果我从UI屏幕中选择值3,它必须在表中查找记录

如果任何列中的值匹配,我必须返回我这样写的记录

Select * 
  FROM WorkItems 
 WHERE [System.Title] like '%defect%' 
   AND [System.WorkItemType] in ('Incident','bug') 
   AND [ErrorClass] =3 
    OR [Microsoft.VSTS.Common.Priority] =3 
   AND [Customer] = 'XYZ' 
 order by [System.WorkItemType]
它给出错误记录并获取优先级或errorclass=3的所有记录,我只需要workitem type=incident或bug for error class=3或priority=3的记录

它将返回表中的所有记录

如果我把[ErrorClass]=3和[Microsoft.VSTS.Common.Priority]=3这样的条件放在一起,那么只有当这两个值都为3时,它才会返回。我需要所有符合上述条件的3条记录

Select *
  FROM WorkItems
 WHERE System.Title like '%defect%'
   AND System.WorkItemType in ('Incident', 'bug')
   AND (ErrorClass = 3 OR Microsoft.VSTS.Common.Priority = 3)    
   AND Customer = 'XYZ'
 order by System.WorkItemType 

再加上这一点,OP学到了一些东西。where子句中添加的括号破坏了逻辑链。因此,对于每一个条件,不用说它是AND或,你可以用括号将它分解为AND子句中的OR子句,如果你愿意的话。操作的顺序是AND条件将先计算,然后再计算OR条件。了解这一点至关重要,因为这会对结果产生影响。最好的做法是,当您混合和/或确保您的意图是明确的时,将操作顺序高于AND子句的东西括起来。