我不知道 MySQL 内部是如何工作的,但我确信索引或一些关于表计数的元信息存在一些问题:
mysql> select count(*) from Event;
+----------+
| count(*) |
+----------+
| 5925 |
+----------+
1 row in set (0,01 sec)
mysql> select count(*) from Event where event_id in (select discount_event_id from Discount);
+----------+
| count(*) |
+----------+
| 5901 |
+----------+
1 row in set (0,12 sec)
mysql> select count(*) from Event where event_id not in (select discount_event_id from Discount);
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0,11 sec)
这些 24
缺少 event_id
是没有意义的。从我的角度来看,这在逻辑上是不可能的。不能有 24
行既在又不在另一个集中。或者是,或者不是。
此外,正如一些答案和评论所建议的那样,没有NULL
event_id
,因为它们是rowids:
mysql> select count(*) from Event where event_id is null;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
这是怎么回事?
最佳答案
表示有24个event_id
是NULL
select count(*) from Event where event_id IS NULL
当您与被强制为FALSE
因此从两个结果集中省略。
关于mysql - MySQL 中不可能的行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54470947/