廣東官網(wǎng)網(wǎng)站建設哪家好二十個優(yōu)化
count(1) and count(字段)
兩者的主要區(qū)別是
- count(1) 會統(tǒng)計表中的所有的記錄數(shù),包含字段為null 的記錄。
- count(字段) 會統(tǒng)計該字段在表中出現(xiàn)的次數(shù),忽略字段為null 的情況。
即不統(tǒng)計字段為null 的記錄。
?
count(*) 和 count(1)和count(列名)區(qū)別
執(zhí)行效果上:
- count(*)包括了所有的列,相當于行數(shù),在統(tǒng)計結(jié)果的時候,不會忽略為NULL的值。
- count(1)包括了忽略所有列,用1代表代碼行,在統(tǒng)計結(jié)果的時候,不會忽略為NULL的值。
- count(列名)只包括列名那一列,在統(tǒng)計結(jié)果的時候,會忽略列值為空(這里的空不是指空字符串或者0,而是表示null)的計數(shù),即某個字段值為NULL時,不統(tǒng)計
?
count()函數(shù)
1、count(*)將返回表格中所有存在的行的總數(shù)包括值為null的行,然而count(列名)將返回表格中除 去null以外的所有行的總數(shù)(有默認值的列也會被計入)
2、distinct 列名,得到的結(jié)果將是除去值為null和重復數(shù)據(jù)后的結(jié)果
1 -- 創(chuàng)建test表2 SQL> create table test3 (4 ename varchar2(10),5 sal number(4)6 );7 8 -- 向test表中插入數(shù)據(jù)9 SQL> insert into test values('fxe1',90);
10 SQL> insert into test(ename) values('fxe2');
11 SQL> insert into test(ename) values('fxe3');
12 SQL> insert into test(ename) values('fxe4');
13 SQL> insert into test values('fxe5',80);
14 SQL> insert into test values('fxe6',80);
15
16 SQL> select * from test; -- 查詢test表中的所有數(shù)據(jù)
17 ENAME SAL
18 ---------- ----------
19 fxe1 90
20 fxe2
21 fxe3
22 fxe4
23 fxe5 80
24 fxe6 80
25 ---------- ----------26
27 SQL> select count(*) from test; -- count(*):包含NULL,一共6條記錄
28 COUNT(*)
29 ----------
30 6
31
32 SQL> select count(1) from test; -- count(1):包含NULL,一共6條記錄,和count(*)的結(jié)果一樣
33 COUNT(1)
34 ----------
35 6
36
37 SQL> select count(sal) from test; -- count(列名):不包含NULL,但包含重復值項,一共3條記錄
38 COUNT(SAL)
39 ----------
40 3
41
42 SQL> select count(distinct sal) from test; -- count(列名):不包含NULL,去重“count(distinct sal)”,一共2條記錄
43 COUNT(DISTINCTSAL)
44 ------------------
45 2
46
47 SQL> select distinct sal from test;
48 SAL
49 ----------
50 80
51 90
?
?
?