Вот что на самом деле делал ваш запрос:
SELECT * FROM
notifications
WHERE (receiverUserID = 3 AND status = 0 AND typ = 1) OR typ = 2;
Это связано с тем, что AND
имеет больший приоритет , чем OR
. Это объясняет, почему все эти typ = 2
записи появляются в вашем наборе результатов. Вам необходимо использовать круглые скобки для принудительного использования и / или logi c, которые вы имеете в виду:
SELECT * FROM
notifications
WHERE receiverUserID = 3 AND status = 0 AND (typ = 1 OR typ = 2);
Обратите внимание, что при использовании синтаксиса WHERE IN (...)
это было бы спорным вопросом:
SELECT * FROM
notifications
WHERE receiverUserID = 3 AND status = 0 AND typ IN (1, 2);