MySQL NICHT aus einer anderen Spalte in der gleichen Tabelle

Möchte ich laufen, eine mysql-Abfrage wählen Sie alle Zeilen aus einer Tabelle films denen der Wert der title Spalte existiert nicht, nirgendwo, in der alle Werte einer anderen Spalte (collection).

Hier ist eine vereinfachte version meiner Tabelle mit Inhalt:

mysql> select * from films;
+----+--------------+--------------+
| id | title        | collection   |
+----+--------------+--------------+
|  1 | Collection 1 | NULL         |
|  2 | Film 1       | NULL         |
|  3 | Film 2       | Collection 1 |
+----+--------------+--------------+

Hier ist meine Abfrage:

mysql> SELECT * FROM films WHERE title NOT IN (SELECT collection FROM films);
Empty set (0.00 sec)

In diesem Beispiel, ich würde wollen, markieren Sie die Zeilen mit Titeln Film 1 und Film 2, aber meine Anfrage zurück, die keine Zeilen.

Hier ist die Struktur der Tabelle:

CREATE TABLE `films` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(200) NOT NULL DEFAULT '',
  `collection` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;
Der Grund, warum man nicht wieder alle Zeilen ist, weil NULL nicht berücksichtigt wird in dem ResultSet. Ich habe den leisen Verdacht, wenn Sie ersetzen, NULL durch einen Leerstring, kann dies Ihr problem lösen.
Getestet habe ich diese und es scheint nicht das Problem sein.
Not in (Set containing null) immer gibt keine Zeilen zurück.
Dies ist ein dup von stackoverflow.com/questions/1001144/...

InformationsquelleAutor jessica | 2013-01-09

Schreibe einen Kommentar