Я не знаю, что я делаю неправильно … это мой код:
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
И снова проблема заключается в том, что вывод является ложным, то есть это не работает.
Вам необходимо использовать скобки для указания приоритета оператора:
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")
Это не то, что вы хотите.