核心规则
表达式 统计规则
COUNT(*) 统计所有行数(包括所有字段为NULL的行)。
COUNT(字段) 仅统计该字段不为NULL的行数(若字段为NULL则自动忽略该行)。
误区
A表连接B表,若A和B是一对多的关系时,会出现
的结果,我们都知道A left join B时A的结果是一定存在的,当一对多时就会A有多个相同的结果,这个时候如果A left join B的同时在后面补上删除掉B1的条件,那么结果就只有一行了,像这种情况下左边的A1同样也就会少一行
我想表达的意思时,当在连接条件主动额外删除B表的数据时,实际上总体结果数量也被删除了(删除了一整行,除非下面在一条数据的情况下才会保留左表数据,因为只剩一行了),像这种情况发生时,你不管count()还是count(B表字段)都是一样的。因为丢失的数据在连接条件就被删除掉了,除非在一条数据的情况下你删除右表某些数据可能导致结果不相同,比如一个对一个的结果集中
当你A left join B on 连接条件 and 删除B1的条件 时,结果才会变成
只有在这种情况下count()和count(B表NULL的字段)才有区别