Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête SQL où le champ NE contient PAS $x

Quel genre de champ est-ce? L'opérateur IN ne peut pas être utilisé avec un seul champ, mais est destiné à être utilisé dans des sous-requêtes ou avec des listes prédéfinies :

-- subquery
SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y);
-- predefined list
SELECT a FROM x WHERE x.b NOT IN (1, 2, 3, 6);

Si vous recherchez une chaîne, optez pour l'opérateur LIKE (mais ce sera lent) :

-- Finds all rows where a does not contain "text"
SELECT * FROM x WHERE x.a NOT LIKE '%text%';

Si vous le restreignez afin que la chaîne que vous recherchez doive commencer par la chaîne donnée, il peut utiliser des index (s'il existe un index sur ce champ) et être raisonnablement rapide :

-- Finds all rows where a does not start with "text"
SELECT * FROM x WHERE x.a NOT LIKE 'text%';