Mysql
 sql >> Database >  >> RDS >> Mysql

Query SQL in cui il campo NON contiene $x

Che tipo di campo è questo? L'operatore IN non può essere utilizzato con un singolo campo, ma è pensato per essere utilizzato nelle sottoquery o con elenchi predefiniti:

-- 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);

Se stai cercando una stringa, scegli l'operatore LIKE (ma sarà lento):

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

Se lo limiti in modo che la stringa che stai cercando debba iniziare con la stringa data, può utilizzare indici (se c'è un indice su quel campo) ed essere ragionevolmente veloce:

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