简单的SQL和OR不工作

0 sql boolean-logic

SELECT *
FROM Items
WHERE (Balance >= 0) OR (Item Like '%XF%' AND Balance > 0)
Run Code Online (Sandbox Code Playgroud)

这将返回所有项目balance >= 0.

我需要它来报告带有balance >=0OR的所有项目...所有项目都带有balance > 0(但不等于0)并且在项目编号中有'XF'.

Item 1234 - Balance 0
Item 1234 - Balance 25    
Item 1234-XF - Balance 25    
Item 1234-XF - Balance 0 <-- should not be here because it is an XF and has a balance of 0.
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?如果我单独做各自的话,它确实有效,所以我不确定为什么我不能将两者结合起来.

Blo*_*ard 5

它正在做你要求它做的事情.如果Balance > 0是真的,那么Balance >= 0一定是真的,无论是否Item Like '%XF%'真实无所谓.

我想你其实想要这样的东西:

SELECT * FROM Items 
WHERE (Balance > 0) 
   OR (Item Not Like '%XF%' AND Balance = 0)
Run Code Online (Sandbox Code Playgroud)