Ich habe diese Tabelle:Seltsames Verhalten mit NOT IN
select count(distinct clean_deep_link) from tbl_1;
+---------------------------------+
| count(distinct clean_deep_link) |
+---------------------------------+
| 121211 |
+---------------------------------+
Ich habe diese Anfrage:
select count(1) from tbl_1 where clean_deep_link IN
(select clean_deep_link from tbl_2);
+----------+
| count(1) |
+----------+
| 66360 |
+----------+
Aber wenn ich die Abfrage not in
ändern gibt es eine leere Menge:
select count(1) from tbl_1
where clean_deep_link not in (select clean_deep_link from tbl_2);
+----------+
| count(1) |
+----------+
| 0 |
+----------+
Wie ist das möglich? Wenn die Unterabfrage etwa die Hälfte der Datensätze enthält, sollte nicht die not
der Unterabfrage die andere Hälfte enthalten? Was fehlt mir hier?
Dank
Versuchen 'SELECT COUNT (*) handhaben, zählen (1) FROM tbl_1 ...' – vyegorov
Haben Sie nulls in der Spalte haben? Was gibt 'SELECT COUNT (*) FROM tbl_1 WHERE clean_deep_link IS NULL' zurück? –
Oder mit anderen Worten, es gibt drei Hälften in einer SQL-Tabelle. –