Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL-Abfrage, bei der das Feld $x NICHT enthält

Was ist das für ein Feld? Der IN-Operator kann nicht mit einem einzelnen Feld verwendet werden, sondern ist für die Verwendung in Unterabfragen oder mit vordefinierten Listen gedacht:

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

Wenn Sie eine Zeichenfolge suchen, wählen Sie den LIKE-Operator (aber das wird langsam):

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

Wenn Sie es so einschränken, dass die Zeichenfolge, nach der Sie suchen, mit der angegebenen Zeichenfolge beginnen muss, kann es Indizes verwenden (wenn es einen Index für dieses Feld gibt) und einigermaßen schnell sein:

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