sql 'is not' (<>) не работает

Я не знаю, что я делаю неправильно … это мой код:

SELECT * FROM messages WHERE userId = "6" OR toUserId = "6" OR toAll = "1" AND id <> "4" ORDER BY time DESC LIMIT 1 

Проблема в том, что «is not» (<>) не работает, он все равно возвращает результат, где id равен 4. В чем проблема?

EDIT: Теперь я застрял в следующей проблеме:

 SELECT * FROM messages WHERE ( userId = "6" OR toUserId = "6" OR toAll = "1" ) AND id <> IN ('4','2') ORDER BY time DESC LIMIT 1 

И снова проблема заключается в том, что вывод является ложным, то есть это не работает.

Solutions Collecting From Web of "sql 'is not' (<>) не работает"

Вам необходимо использовать скобки для указания приоритета оператора:

 WHERE ( userId = "6" OR toUserId = "6" OR toAll = "1" ) AND id <> "4" 

Я думаю, что ваше условие Query должно быть следующим:

 WHERE (userId = "6" OR toUserId = "6" OR toAll = "1") AND (id <> "4") 

Ваш запрос будет оценен для:

 WHERE (userId = "6" OR toUserId = "6") OR (toAll = "1" AND id <> "4") 

Это не то, что вы хотите.