日期:2014-05-16  浏览次数:21345 次

Oracle中count的用法
Select count(1) 和Select count(*) 返回的结果一样吗?
那么Select count(distinct Column1) from test1 ;
Select count(distinct Column1) from test1 又如何呢?

测试一下:
test1表的内容如下:


select count(1) from test1;--包括空的 8
select count(*) from test1;--包括空的 8
select count(column1) from test1; --非空的统计 6
select count(distinct column1) from test1; --非空,去除重复 3

------解决方案--------------------
楼主想表达什么。印象中记得Select count(1) 和Select count(*) 主要是是考虑在数据量较大的时候的效率问题
------解决方案--------------------
Select count(1)/count(0)... 和Select count(*) 在结果上是一样的,即时有null值也会记录一条记录的

select count(column1) from test1 表示不包括column1为null的
select count(distinct column1) from test1 表示不包括为null的,并且去掉重复的
------解决方案--------------------
前2句结果一样 但是效率会有轻微的差别 
count(*)走的是标识列 就是隐藏列rowid 效率稍高 
count(1)走的是行赋值 要用的话一般会使用count(主键)

后面2句容易理解
------解决方案--------------------
前二句效率不样,结果一样

Select count(distinct Column1) from test1 查的意思跟结果都不样

------解决方案--------------------
楼主不是都知道了?就是这个意思
------解决方案--------------------
COUNT(字段最好是索引字段)
------解决方案--------------------
Select count(distinct Column1) from test1
这个肯定是和别的没法比效率