tengo esta tabla:comportamiento extraño con NO EN
select count(distinct clean_deep_link) from tbl_1;
+---------------------------------+
| count(distinct clean_deep_link) |
+---------------------------------+
| 121211 |
+---------------------------------+
tengo esta consulta:
select count(1) from tbl_1 where clean_deep_link IN
(select clean_deep_link from tbl_2);
+----------+
| count(1) |
+----------+
| 66360 |
+----------+
Pero cuando cambio la consulta a not in
devuelve un conjunto vacío:
select count(1) from tbl_1
where clean_deep_link not in (select clean_deep_link from tbl_2);
+----------+
| count(1) |
+----------+
| 0 |
+----------+
¿Cómo es esto posible? si la subconsulta contiene aproximadamente la mitad de los registros, ¿no debería el not
de la subconsulta contener la otra mitad? ¿Que me estoy perdiendo aqui?
Gracias
Pruebe 'SELECT count (*), count (1) DE tbl_1 ... – vyegorov
' ¿Tiene nulos en la columna? ¿Qué devuelve 'SELECT COUNT (*) FROM tbl_1 WHERE clean_deep_link IS NULL'? –
O, en otras palabras, hay tres partes en una tabla SQL. –