count(*)、count(1)、count(0)、count(列名)区别

1、count(*)、count(1):

  count(*)对行的数目进行计算,包含NULL,count(1)这个用法和count(*)的结果是一样的。

  如果表没有主键,那么count(1)比count(*)快。表有主键,count(*)会自动优化到主键列上。

  如果表只有一个字段,count(*)最快。

  count(1)跟count(主键)一样,只扫描主键。count(*)跟count(非主键)一样,扫描整个表。明显前者更快一些。

  count(1)和count(*)基本没有差别,但在优化的时候尽量使用count(1)。

2、count(1)、count(列名):

(1) count(1) 会统计表中的所有的记录数,包含字段为null 的记录。

(2) count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。即不统计字段为null 的记录。

原文地址:https://www.cnblogs.com/guoyu1/p/12239912.html

时间: 2024-10-09 19:05:23

count(*)、count(1)、count(0)、count(列名)区别的相关文章

count(*) 和 count(1)和count(列名)区别

执行效果上:  count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL  count(1)包括了所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL  count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计 执行效率上:  列名为主键,count(列名)会比count(1)快  列名不为主键,count(1)会比count(列名)快  如果表多个列并且

[Oracle] “表中有数据,但select count(*)的结果为0”问题的解决办法

一.问题 今天遇到了一个神奇的问题--表中有数据,但select count(*)的结果为0. 这个问题最初的表现形式是"查询报表没有分页". 最开始还以为是java端的问题.后来才发现,查分页的sql语句是返回0的. 随后将该sql语句放到PLSQL里运行,发现也是返回0条. 数据库版本是 Oracle 11.1.0.6. 试了好几个搜索引擎,但网上找不到类似情况. 二.山穷水尽疑无路 首先确认一下该表是否有数据-- select * from mytable 可看到该表(mytab

mysql插入数据 报错[Err] 1136 - Column count doesn't match value count at row 1(表中有自增列)

版本:8.0.16 创建了一张表:create table user_table(uid int primary key auto_increment,uname varchar(10))auto_increment=1 插入数据报错: 经查找 ,有三种方式可以解决这个问题: 1.插入数据得时候,带入列名: insert into user_table("uname") values ("刘一") 2.自增键这列设置为0 insert into user_table

mysql提示Column count doesn't match value count at row 1错误

mysql提示Column count doesn't match value count at row 1错误,后来发现是由于写的SQL语句里列的数目和后面的值的数目不一致, 比如insert into 表名 (field1,field2,field3) values('a','b')这样前面的是三列,后面却只有二个值,这就会出现这个错误的. mysql提示Column count doesn't match value count at row 1错误

jdbc mysql - Column count doesn't match value count at row 1.

该句的意思是,insert操作的SQL语句里列的数目和后面值的数目不一致.比如说, String sql = "insert into t_aqi(city_name, cur_date, aqi_val, no2_val, no2_val) values(?, ?, ?, ?)"; 这里很明显,t_aqi括号中的参数的个数多余values括号中的个数. jdbc mysql - Column count doesn't match value count at row 1.

java.sql.SQLException:Column count doesn't match value count at row 1

1.错误描述 java.sql.SQLException:Column count doesn't match value count at row 1 2.错误原因     在插入数据时,插入的字段个数跟数据库表字段个数不一致 insert into student(sno,sname,sage,ssex) values(1,'张三丰','man'); 3.解决办法     保证插入数据字段个数跟数据库表中的字段个数一致 insert into student(sno,sname,sage,s

SQLException: Column count doesn't match value count at row 1

INSERT INTO table_name(col_name1, col_name2, col_name3) VALUES('value1','value2'); 语句中,前后列数不等造成的 转自:http://blog.csdn.net/ilbubby/article/details/6596119 SQLException: Column count doesn't match value count at row 1

[Err] 1136 - Column count doesn't match value count at row 1

1 错误描述 [Err] 1136 - Column count doesn't match value count at row 1 Procedure execution failed 1136 - Column count doesn't match value count at row 1 2 错误原因 3 解决办法 [Err] 1136 - Column count doesn't match value count at row 1

MySql数据库执行insert时候报错:Column count doesn't match value count at row 1

遇到这个问题之后,第一反应就是前后列数不等造成的,但是我检查SQL之后,发现列数是相同得,但是插入还是有问题,然后又写了简单得SQL只插入不为空得字段,执行还是报这个错,最后请教了高人,指点之后,大概是因为当前插入得表被锁住了,然后执行下面得SQL后,之前得SQL就可以正常插入了 LOCK TABLES `system_function_info` WRITE;  UNLOCK TABLES; MySql数据库执行insert时候报错:Column count doesn't match val