Почему запрос MySQL дает неожиданные результаты? - PullRequest
0 голосов
/ 23 декабря 2018

Это мой запрос MySQL:

SELECT mCat,postSta 
FROM `info_posts` 
WHERE `mCat` = 'Mobiles' AND `sCat` = 'Mobile Phones' AND `brCat` = 'Apple' AND `postSta` = 1 OR `postSta` = 4 OR `postSta` = 5

Проблема в том, что он правильно выбирает все критерии, но также выбирает вещи, где postSta = 4 и 5 смотрят наСкриншот .Я хочу выбрать вещи, которые соответствуют критериям mCat, sCat и brCat, где postSta равно 1, 4 или 5.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Логическая операция «и» имеет более высокий приоритет, чем логическая операция «или».Логика, которую вы ищете, может быть достигнута, заключив ряд условий "или" в круглые скобки:

SELECT `mCat`, `postSta`
FROM   `info_posts`
WHERE  `mCat` = 'Mobiles' AND
       `sCat` = 'Mobile Phones' AND
       `brCat` = 'Apple' AND
       (`postSta` = 1 OR `postSta` = 4 OR `postSta` = 5)
0 голосов
/ 23 декабря 2018

Использование IN:

SELECT mCat,postSta
FROM info_posts
WHERE mCat = 'Mobiles' AND sCat = 'Mobile Phones' AND brCat = 'Apple' AND 
      postSta IN (1, 4, 5)

Проблема в том, что вам нужны скобки в запросе, но IN - лучший подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...