2011-02-15 3 views
0

J'ai cette requête sql. Où je ne veux pas sélectionner les enregistrements qui ont Type qui n'est pas égal à 1. Quel est le problème avec cette requête?Comment exclure les résultats dans mysql

SELECT * 
FROM admin_table 
WHERE Type != '1' 
AND Uneym LIKE '%' 
OR Email LIKE '%' 
LIMIT 0 , 30 
+0

ce que vous obtenez si vous exécutez cette requête, il semble bien –

+0

Vous retournerez tout comme la requête est techniquement (type! = « 1 » ET Unym est n'importe quoi) OU (Email est n'importe quoi). Voyant que l'email sera toujours quelque chose le 'où 'retournera toujours tout. Faites comme kappa dit ci-dessous. – anothershrubery

Répondre

3

Vous devez envelopper votre condition where entre parenthèses:

where `type` <> 1 and (`uneym` like '%%' or `email` like '%%') 
2
SELECT * 
FROM admin_table 
WHERE Type <> '1' 
AND Uneym LIKE '%' 
OR Email LIKE '%' 
LIMIT 0 , 30 
+0

est un mot réservé pour mysql? Il semble être en train de capitaliser le type de mot. Une fois je l'exécute. –

+0

'! =' Devrait aussi fonctionner. C'est à cause de l'instruction 'OR' que cela ne fonctionne pas. – anothershrubery

+0

probablement, utilisez les tiques comme indiqué ci-dessous dans la réponse de kappa – Leslie

2
SELECT * 
FROM admin_table 
WHERE NOT Type = '1' 
AND (Uneym LIKE '%' OR Email LIKE '%') 
LIMIT 0 , 30 
1

une remarque que vous n'avez pas besoin la condition

AND Uneym LIKE '%' 
OR Email LIKE '%' 

parce qu'il dit me apporter tout

Type != 1 

ou

Type <> 1 

son pas d'importance, both syntax work

+1

Ceci est également vrai. – anothershrubery

Questions connexes