oracle count(*),count(1)与count(rowid)区别
追问:如果要剔除重复的记录,是不加distinct就行了?
追问:如果要剔除重复的记录,是不加distinct就行了?
答案:其实都是一样的
count(*),会把星号翻译成字段的名字,计算分组下重复的行数。
count(1),你可以理解成有个字段,这个字段就是固定值1,那么也是计算分组下重复的行数。
同理,count(2), count(3)或者count('x')等等都是一样的结果。
count(rowid)也是一样
这三个结果都是一样的,最终的计算结果就是分组下符合条件的行数。
其他:9i以后的版本这几个是一样的,你可以查看执行计划来确定是否有区别 COUNT(*)是按记录一行行来统计, COUNT(1)只统计行数,至于COUNT(ROWID)按物理号来统计