MySQL Как использовать и OR внутри оператора AND для предложения where? - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь использовать AND с OR внутри моего предложения WHERE, но я не получаю ожидаемых результатов. Это мой запрос:

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

Проблема в том, что я получаю BattedBallID, которые имеют 0 в строках, но ни один из них не имеет нулевого значения. Я хочу, чтобы мои результаты имели BattedBallID, которые не равны 0 и не равны нулю;

1 Ответ

2 голосов
/ 11 ноября 2019

Я хочу, чтобы мои результаты имели BattedBallID, которые не равны 0 и не равны нулю;

Вы хотите:

and BattedBallID is not null and BattedBallID <> 0;

Вместо:

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

Ваше исходное выражение на самом деле всегда будет оцениваться как истинное, поскольку оба условия не могут быть ложными одновременно: если что-то равно null, то оно не равно 0, и если что-торавно 0, то это не null.

...