MySQL 如何在 where 子句的 AND 运算符中使用 and OR?

MySQL How to use and OR inside an AND operator for a where clause?

我试图在我的 WHERE 子句中使用 AND 和 OR,但我没有得到预期的结果。这是我的查询:

select * 
  from Pitches 
 where BatterID = @playerID 
   and YEAR(GameDate) in (2019) 
   and (BattedBallID is not null or BattedBallID <> 0);

问题是我得到的 BattedBallID 在行中为 0,但其中 none 为空。我想要它,所以我的结果中的 BattedBallID 不为 0 且不为空;

I want it so my results have BattedBallID's that aren't 0 and aren't null;

你想要:

and BattedBallID is not null and BattedBallID <> 0;

而不是:

and (BattedBallID is not null or BattedBallID <> 0);

您的原始表达式实际上总是计算为真,因为两个条件不能同时为假:如果某物是 null,则它不等于 0,如果某物等于0,则不是null.