久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么在mysql中使用if函數

140次閱讀
沒有評論

共計 1227 個字符,預計需要花費 4 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

今天就跟大家聊聊有關怎么在 mysql 中使用 if 函數,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

具體場景如下, 

先看看表結構:

CREATE TABLE `message` ( `id` varchar(30) NOT NULL,
 `title` varchar(30) DEFAULT NULL,
 `content` text,
 `send_time` datetime DEFAULT NULL,
 `type` int(1) DEFAULT NULL COMMENT  1: 系統通知,2:投訴建議 ,
 `status` int(1) DEFAULT NULL COMMENT  0:待發送,1:成功,2:失敗 ,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

具體要求是:分別統計系統通知和投訴建議兩種消息的總條數、成功條數和失敗條數。

遇到這樣的問題,我們一般的思路就是用 type 分組,分別查詢系統通知和投訴建議的總條數,然后用兩個子查詢來統計成功條數和失敗條數。sql 如下:

SELECT
 COUNT(1) total,
 m.type,
 (SELECT
 COUNT(1)
 FROM message ms
 WHERE ms.status = 1
 AND m.type = ms.type) successtotal,
 (SELECT
 COUNT(1)
 FROM message mf
 WHERE mf.status = 1
 AND m.type = mf.type) failtotal
FROM message m
GROUP BY m.type

我們看看運行時間,統計 1 千萬條數據大概需要 6 分 18 秒。

那么有沒有更簡單,更快的統計方式呢,當然是有的,就是我們今天主要講的 if() 函數。

基本語法

IF(expr1,expr2,expr3),如果 expr1 的值為 true,則返回 expr2 的值,如果 expr1 的值為 false,則返回 expr3 的值。就是一個簡單的三目表達式。

如何做

說說思路,假如我們統計成功條數,我們可以這樣寫 if(status=1,1,0),這樣如果 status==1,則返回 1,否則返回 0。然后我們通過 SUM() 函數將成功條數相加即可。

實現方式

sql 語句如下:

SELECT
 COUNT(1) total,
 m.type,
 SUM(IF(m.status = 1,1,0)) successtotal,
 SUM(IF(m.status != 1,1,0)) failtotal
FROM message m
GROUP BY m.type;

看完上述內容,你們對怎么在 mysql 中使用 if 函數有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計1227字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 武汉市| 陈巴尔虎旗| 壤塘县| 桃园县| 牙克石市| 泗洪县| 兴安盟| 余干县| 菏泽市| 尚志市| 滦南县| 麟游县| 安义县| 霍州市| 恩施市| 静安区| 和顺县| 娱乐| 青田县| 吉木萨尔县| 贞丰县| 平谷区| 建湖县| 太和县| 曲阜市| 腾冲县| 凤冈县| 页游| 桦川县| 遂昌县| 阿荣旗| 天峻县| 聂荣县| 凌云县| 贵定县| 辰溪县| 岱山县| 固阳县| 剑河县| 甘南县| 千阳县|