Tôi có bảng này:hành vi kỳ lạ với NOT IN
select count(distinct clean_deep_link) from tbl_1;
+---------------------------------+
| count(distinct clean_deep_link) |
+---------------------------------+
| 121211 |
+---------------------------------+
Tôi có truy vấn này:
select count(1) from tbl_1 where clean_deep_link IN
(select clean_deep_link from tbl_2);
+----------+
| count(1) |
+----------+
| 66360 |
+----------+
Nhưng khi tôi thay đổi truy vấn để not in
nó sẽ trả về một tập rỗng:
select count(1) from tbl_1
where clean_deep_link not in (select clean_deep_link from tbl_2);
+----------+
| count(1) |
+----------+
| 0 |
+----------+
Làm cách nào có thể? nếu truy vấn con chứa khoảng một nửa số bản ghi, không nên not
truy vấn phụ chứa nửa còn lại? Tôi đang thiếu gì ở đây?
Cảm ơn
Hãy thử 'select count (*), đếm (1) TỪ tbl_1 ... ' – vyegorov
Bạn có null trong cột? 'SELECT COUNT (*) FROM tbl_1 WHERE clean_deep_link IS NULL' trả về cái gì? –
Hay nói cách khác, có ba nửa trong một bảng SQL. –