目录

MySQL中count与count字段区别

MySQL中count(*)与count(字段区别)

表达式 统计规则 COUNT(*) 统计所有行数(包括所有字段为NULL的行)。 COUNT(字段) 仅统计该字段不为NULL的行数(若字段为NULL则自动忽略该行)。

A表连接B表,若A和B是一对多的关系时,会出现 https://i-blog.csdnimg.cn/direct/d29b3f11076c423d83c7dac4dd5242e1.png 的结果,我们都知道A left join B时A的结果是一定存在的,当一对多时就会A有多个相同的结果,这个时候如果A left join B的同时在后面补上删除掉B1的条件,那么结果就只有一行了,像这种情况下左边的A1同样也就会少一行 https://i-blog.csdnimg.cn/direct/4fcaf081434e4c0cbd900affbf47df99.png 我想表达的意思时,当在连接条件主动额外删除B表的数据时,实际上总体结果数量也被删除了(删除了一整行,除非下面在一条数据的情况下才会保留左表数据,因为只剩一行了),像这种情况发生时,你不管count()还是count(B表字段)都是一样的。因为丢失的数据在连接条件就被删除掉了,除非在一条数据的情况下你删除右表某些数据可能导致结果不相同,比如一个对一个的结果集中 https://i-blog.csdnimg.cn/direct/ac16dd1bc9e44fd99311604de6efa3a5.png 当你A left join B on 连接条件 and 删除B1的条件 时,结果才会变成 https://i-blog.csdnimg.cn/direct/5975d5f7ec074ff191e740d7f72eb67e.png 只有在这种情况下count()和count(B表NULL的字段)才有区别