mySql: оператор `SELECT`` с` OR` и `AND` - PullRequest
1 голос
/ 08 июля 2011

Я не понимаю, почему я получаю строки, возвращаемые запросом ...

Вот запрос, он ищет наличие строки в одной таблице.

SELECT * 
  FROM `donor` 
 WHERE `col1` LIKE '%test%' 
    OR `col2` LIKE '%test%' 
    OR `col3` LIKE '%test%' 
    OR `col4` LIKE '%test%' 
   AND `delete` = 0

Последняя строка AND delete = 0 возвращает строки, столбец удаления которых равен 1?У кого-нибудь есть идея, почему это происходит?

Ответы [ 2 ]

4 голосов
/ 08 июля 2011

Перепишите предложение WHERE следующим образом:

SELECT * FROM `donor` WHERE 
(`col1` LIKE '%test%' OR 
`col2` LIKE '%test%' OR 
`col3` LIKE '%test%' OR 
`col4` LIKE '%test%')
AND `delete` =0

Вы хотите или первый набор критериев вместе и затем выполните операцию AND.

1 голос
/ 08 июля 2011

Вам нужно сгруппировать условия, заключив их в квадратные скобки (). Попробуйте это:

SELECT * FROM `donor` WHERE 
(`col1` LIKE '%test%' OR 
`col2` LIKE '%test%' OR 
`col3` LIKE '%test%' OR 
`col4` LIKE '%test%') AND
`delete` =0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...