您的位置:首页 > 其它

count(*)和count(列)之争

2015-09-18 06:02 218 查看
闲话少说,先上实验

SQL> create table test_cnt as select object_id,data_object_id from dba_objects;

表已创建。

SQL>
SQL> select count(*) from test_cnt;

COUNT(*)
----------
77431

SQL> select count(data_object_id) from test_cnt;

COUNT(DATA_OBJECT_ID)
---------------------
10987

SQL> select count(2) from test_cnt;

COUNT(2)
----------
77431

oracle 除了COUNT(*) 外,默认是不统计NULL的,COUNT(常量) 相当于在每行上加了一个常量,因此和COUNT(*) 相同

结论:

1:COUNT(*)  和 COUNT(列) 是不一样的,两者不等价(很多人的误区)

2:COUNT(*)   统计所有满足条件的记录

3:COUNT(列)  统计所有非空的列

:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: