2015-04-17 2 views
0

При выполнении следующего запроса:MySQL возвращаются неверные результаты по INT Колонка

SELECT id,name,verified FROM servers WHERE verified=1 AND enabled=1 AND suspended=0 AND name LIKE '%.net%' || ip LIKE '%.net%' ORDER BY score DESC 

MySQL возвращает неправильные результаты. Вот результат этого ввода:

+----+-------------------+----------+ 
| ID |  name  | verified | 
+----+-------------------+----------+ 
| 34 | BlockedUp   |  1 | 
| 8 | aliacraft   |  1 | 
| 27 | Limitless MC  |  1 | 
| 31 | OPCraft   |  1 | 
| 33 | LoneWolves Prison |  1 | 
| 47 | purpleprison.net |  0 | 
+----+-------------------+----------+ 

В чем причина этого? Последняя строка явно не соответствует требованию verified = 1.

+1

Вы должны сгруппировать условия в тех случаях, когда условие – Cherry

+1

@james The OR '% .net%' не зависит от другого если вы их завернули в(), то вы говорите запрос (включено = 1 и приостановлено = 0 и имя like.net) или (ip как «% .net%»). Какой IP-адрес ID 47? Я предполагаю, что в нем есть .net. – xQbert

+0

Спасибо всем, теперь я решил проблему с ответом Абхика. – James

ответ

4

Вы должны переместить

AND name LIKE '%.net%' || ip LIKE '%.net%' 

в фигурных скобках, как

AND (name LIKE '%.net%' or ip LIKE '%.net%') 
Смежные вопросы