天天看點

MySQL中ifnull和sum的差別求和運算經常用到ifnull和sum函數,以下對二者的使用方法和差別進行講解1.IFNULL2.SUM總結:

求和運算經常用到ifnull和sum函數,以下對二者的使用方法和差別進行講解

1.IFNULL

使用方法:

select 列名1+ifnull(列名2,常數) from 表名;
           

使用要求:

1.其中列名1的值不能為空,列名1的值一旦為null,則“列名1+ifnull(列名2,0)”的結果就為null.

2.列名2的值可以為空,列名2 的值為空時 ifnull(列名2,常數)的傳回結果為常數的值,列名1的值再與其相加。(原因是:在使用IFNULL(參數1,參數2) 函數進行求和運算時, 會判斷參數1的值是否為null,如果為null傳回參數2的值,不為null傳回參數1的值。)

例子:圖為employee表中的記錄

MySQL中ifnull和sum的差別求和運算經常用到ifnull和sum函數,以下對二者的使用方法和差別進行講解1.IFNULL2.SUM總結:

以上是一張employee表,工資字段名為salary,獎金字段名為prize,工号字段名為id,現在要求查詢每個員工的工資和獎金總和。

代碼如下:

select id,salary+ifnull(prize,0)as 總工資 from employee;
           

查詢結果如下:

MySQL中ifnull和sum的差別求和運算經常用到ifnull和sum函數,以下對二者的使用方法和差別進行講解1.IFNULL2.SUM總結:

我們發現id為3的員工總工資為null,這是因為id為3的員工的salary字段的值為null,null+ifnull(參數1,參數2)不管ifnull括号裡的參數為什麼值相加的結果都為null;而id為4的員工的prize字段的值雖然為null,但最終的結果不為空。

2.SUM

聚合函數SUM():計算指定列的數值和,如果指定列類型不是數值類型,那麼計算結果為0.

使用方法:

select sum(列1+列2) from 表名
           

使用要求:

用sum函數求和時要求列1和列2 的值都不為null,否則結果為null。

例子:

還是這張employee表,其中記錄不變,改用sum函數進行查詢

MySQL中ifnull和sum的差別求和運算經常用到ifnull和sum函數,以下對二者的使用方法和差別進行講解1.IFNULL2.SUM總結:
select id, sum(salary+prize)as 總工資 from employee group by id;
           

結果如下:

MySQL中ifnull和sum的差別求和運算經常用到ifnull和sum函數,以下對二者的使用方法和差別進行講解1.IFNULL2.SUM總結:

我們發現有空值的列所對應的員工id的查詢最終結果都為null,這是因為用sum函數求和時要求列1和列2 的值都不為null,有一個列的值為null時,結果就為null。

總結:

1.查詢兩列的和時,如果某一列的值可能為空值時不能用SUM函數;

2.使用IFNULL進行求和時,

select 列名1+ifnull(列名2,常數) from 表名;

其中加号左邊的值(列1)的值不能為空,列1的值一旦為null,則運算的結果就為null;列2的值可以為空,列名2 的值為空時 ifnull(列名2,常數)的傳回結果為常數的值,列名1的值再與其相加。

3.使用SUM函數求和時,

SUM(列1+列2)

要求列1和列2 的值都不為null,否則結果為null。

技術交流微信:intboy520