亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mysql使用sum()函數(shù)返回null的問題詳解

 更新時間:2022年01月29日 10:59:56   作者:IT范兒  
MySQL的Sum()函數(shù)是用來找出所有記錄的一個字段的總和,下面這篇文章主要給大家介紹了關(guān)于Mysql使用sum()函數(shù)返回null的問題,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下

介紹

SUM()函數(shù)用于計算一組值或表達(dá)式的總和,SUM()函數(shù)的語法如下:

SUM(DISTINCT expression)

SUM()函數(shù)是如何工作的?

  • 如果在沒有返回匹配行SELECT語句中使用SUM函數(shù),則SUM函數(shù)返回NULL,而不是0。
  • DISTINCT運算符允許計算集合中的不同值。
  • SUM函數(shù)忽略計算中的NULL值。

問題

在項目中使用 Mysql 中的 sum() 函數(shù)求和時,調(diào)試時發(fā)現(xiàn)報出下面的錯誤信息:

sql: Scan error on column index 0, name "total": converting NULL to int64 is unsupported

我相應(yīng)執(zhí)行的sql語句如下:

SELECT SUM(consume) as total FROM task_income WHERE consume_type=3 AND uid=20;

驗證

為了找到原因,我在 Navicat 中執(zhí)行了一遍出問題的sql和參數(shù),發(fā)現(xiàn)結(jié)果中確實是返回了 null :

按我之前開發(fā)時的想法:

  • 如果有相應(yīng)的數(shù)據(jù),返回求和后的值
  • 如果沒有符合條件的數(shù)據(jù),返回 0

結(jié)果,當(dāng)沒有符合條件的數(shù)據(jù)時卻返回了 null 。

解決

可以通過結(jié)合使用 ISNULL 或 COALESCE 函數(shù)來解決。

相應(yīng)的示例如下:

SELECT IFNULL(SUM(Column1), 0) AS total FROM...

SELECT COALESCE(SUM(Column1), 0) AS total FROM...

區(qū)別

上面說道,使用 ISNULL 或 COALESCE 函數(shù)都可以解決為 null 的問題,那么這兩個函數(shù)有什么區(qū)別呢?

  • ISNULL 函數(shù)接受兩個參數(shù),如果第一個參數(shù)不是 null 會直接返回,如果第一個參數(shù)是 null ,則返回第二個參數(shù)
  • COALESCE 函數(shù)可以接受兩個或多個參數(shù),并返回第一個非 null 的參數(shù),如果所有參數(shù)都為 null,則會返回 null

參考

總結(jié)

到此這篇關(guān)于Mysql使用sum()函數(shù)返回null問題的文章就介紹到這了,更多相關(guān)Mysql用sum()返回null內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論