最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL基礎(chǔ)入門之Case語句用法實(shí)例

 更新時(shí)間:2022年08月08日 09:36:23   作者:宇宙之一粟  
case語句是mysql中的一個(gè)條件語句,可以在字段中使用case語句進(jìn)行復(fù)雜的篩選以及構(gòu)造新的字段,下面這篇文章主要給大家介紹了關(guān)于MySQL基礎(chǔ)入門之Case語句用法的相關(guān)資料,需要的朋友可以參考下

引言

MySQL CASE 是一個(gè) MySQL 語句查詢關(guān)鍵字,它定義了處理循環(huán)概念以執(zhí)行條件集并使用 IF ELSE 返回匹配案例的方式。 MySQL 中的 CASE 是一種控制語句,它驗(yàn)證條件案例集,并在第一個(gè)案例滿足 else 值時(shí)顯示值并退出循環(huán)。

如果沒有找到 TRUE 且語句沒有 ELSE 部分或值,則 CASE 返回 NULL?;旧希珻ASE 語句類似于 IF THEN ELSE 邏輯循環(huán)語句。在 MySQL 服務(wù)器上運(yùn)行時(shí),它會(huì)讀取條件表達(dá)式,當(dāng)表達(dá)式大小寫匹配時(shí),nit 會(huì)顯示結(jié)果。之后,它會(huì)進(jìn)一步停止執(zhí)行。

CASE 的語法

下面的語法定義了 CASE 語句 SQL 查詢結(jié)構(gòu):

CASE
WHEN cond1 THEN value1
WHEN cond2 THEN value2
WHEN condN THEN valueN
ELSE value
END;
  • Cond1,cond2,…..,condN:表示在 CASE 語句列表中需要評(píng)估的條件。
  • Value1, value2, .....,valueN:表示滿足條件時(shí)需要顯示的各個(gè)值。
  • Value:表示 else 部分滿足時(shí)顯示的值。

這部分允許在 MySQL 的查詢中添加邏輯 CASE 語句。為了生成有效的語句,我們在任何地方使用帶有 WHERE SELECT 和 ORDER BY 等子句的 CASE 語句。您可以通過如下所示的語法進(jìn)行評(píng)估:

SELECT column1,column2,
CASE
WHEN cond1 THEN value1
WHEN cond2 THEN value2
WHEN condN THEN valueN
ELSE value
END
FROM TableName;

CASE 語句在 MySQL 中是如何工作的?

CASE 語句包含兩個(gè)過程:一個(gè)是 Simple CASE,另一個(gè)是 Searched CASE。我們使用 CASE 語句根據(jù)匹配條件提供結(jié)果值,使用邏輯控制方法與 SQL 子句(如 SELECT、WHERE 和 ORDER BY)一起為 SQL 查詢提供結(jié)果值。

假設(shè),下面的查詢解釋了 CASE 邏輯部分,其中我們提到了一個(gè)像 Student 的表,其中包含字段 StudentName、State、City,那么查詢將被寫為:

SELECT StudentName, State, City FROM Students ORDER BY (
CASE
WHEN State IS NULL THEN City
ELSE State
END);

從這里我們將知道,當(dāng)我們在 SELECT 查詢中應(yīng)用 CASE 語句來獲取滿足特定 case 條件的特定值時(shí)。在上圖中,我們將 CASE 語句放在 State 和 City 列上,如果 State 列包含 NULL 值,則查詢顯示 City 列值,如果 case 語句無效或找不到值,則顯示部分值,即 State返回列值。在這里,我們使用 ORDER BY 子句獲取了應(yīng)用 CASE 的學(xué)生、州和城市的名稱,以對(duì)結(jié)果行進(jìn)行排序。

在 Simple CASE 中,CASE 的列值與 WHEN 子句中的條件語句值匹配以實(shí)現(xiàn)等價(jià)性,然后在語法中的一個(gè)之后生成結(jié)果值。但如果沒有相等的值,則返回 ELSE 部分值(如果提供)。

您不應(yīng)在 WHEN 子句值中使用 NULL,因?yàn)槿绻麍?zhí)行,邏輯部分將為 NULL = NULL,結(jié)果為 FALSE。

現(xiàn)在對(duì)于 Search CASE,它遵循與 Simple CASE 相同的邏輯過程,但搜索案例的一部分使其執(zhí)行起來有所不同。在這里,滿足 MySQL 數(shù)據(jù)類型的值的 CASE 是基于它用于的上下文。例如,如果語句中使用了字符串上下文,則結(jié)果值將采用相同的數(shù)據(jù)類型,字符串。此外,如果 CASE 條件表達(dá)式使用數(shù)字上下文,則返回的值將是整數(shù)、小數(shù)或?qū)崝?shù)值數(shù)據(jù)類型。

帶有 SELECT 和 ORDER BY 子句的 CASE 語句

創(chuàng)建數(shù)據(jù)庫表

CREATE TABLE Students(StudentID int, StudentName varchar(255), State varchar(255), City varchar(255));

往數(shù)據(jù)庫插入新值

INSERT INTO Students (StudentID, StudentName, State, City) VALUES ('01', 'Wade', 'UK', 'London');
INSERT INTO Students (StudentID, StudentName, State, City) VALUES ('02', 'Vivi', 'US', 'NewYork');
INSERT INTO Students (StudentID, StudentName, State, City) VALUES ('03', 'Kyrie', 'CN', 'SH');
INSERT INTO Students (StudentID, StudentName, State, City) VALUES ('04', 'James', '', 'Cleveland ');

查詢數(shù)據(jù)

SELECT * FROM Students;

帶有 SELECT 查詢的 CASE 語句

SELECT StudentName, State, City FROM Students ORDER BY (
CASE
WHEN State IS NULL THEN City
ELSE State
END);

具有聚合函數(shù)的 CASE 語句

我們將使用 CASE 語句和 SUM() MySQL 函數(shù)按訂單狀態(tài)從 Orders 表中計(jì)算總銷售額。

創(chuàng)建數(shù)據(jù)庫表

CREATE TABLE Orders (OrderID int,SalesID int, OrderStatus varchar(255) );

插入數(shù)據(jù)

INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('10', '001', 'Shipped');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('11', '002', 'Shipped');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('12', '003', 'Not Developed');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('13', '004', 'Success');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('14', '005', 'In Process');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('15', '006', 'Cancelled');

SELECT 語句顯示表數(shù)據(jù)

SELECT * FROM Orders;

得到的數(shù)據(jù)如下:

10    1    Shipped
11    2    Shipped
12    3    Not Developed
13    4    Success
14    5    In Process
15    6    Cancelled

在 SQL SELECT 查詢中使用 SUM() 和 COUNT 作為聚合函數(shù)的 CASE 語句

SELECT
SUM(CASE
WHEN OrderStatus = 'Success' THEN 1
ELSE 0
END) AS 'Success Count',
SUM(CASE
WHEN OrderStatus = 'On Hold' THEN 1
ELSE 0
END) AS 'Hold Count',
SUM(CASE
WHEN OrderStatus = 'In Process' THEN 1
ELSE 0
END) AS 'Processing',
SUM(CASE
WHEN OrderStatus = 'Shipped' THEN 1
ELSE 0
END) AS 'Shipping count',
SUM(CASE
WHEN OrderStatus = 'Cancelled' THEN 1
ELSE 0
END) AS 'Cancellation Count',
SUM(CASE
WHEN OrderStatus = 'Not Developed' THEN 1
ELSE 0
END) AS 'Not Developed count',
COUNT(*) AS 'Sum Total'
FROM
Orders;

運(yùn)行結(jié)果:

補(bǔ)充:case行轉(zhuǎn)列用法

現(xiàn)有表數(shù)據(jù)如下圖所示(性別列中,1表示男,2表示女):

需統(tǒng)計(jì)各年級(jí)男女人數(shù)。雖然表中數(shù)據(jù)已有各年級(jí)的男女人數(shù),但是還是不夠一目了然。接下來使用case語句查詢?nèi)缦拢?/p>

SELECT
    class,
    sum( CASE WHEN sex = '1' THEN population ELSE 0 END ) AS cnt_m,
    sum( CASE WHEN sex = '2' THEN population ELSE 0 END ) AS cnt_f 
FROM
    `school_test` 
GROUP BY
    class;

結(jié)果如下:

這是最經(jīng)典的case行轉(zhuǎn)列用法。

總結(jié)

MySQL CASE 語句允許對(duì) SQL 查詢執(zhí)行 IF ELSE 邏輯,以檢查條件語句并從數(shù)據(jù)庫表中獲取所需的結(jié)果集或值。

我們只能將 CASE 語句與存儲(chǔ)過程、存儲(chǔ)事件、函數(shù)和觸發(fā)器一起使用。它用于將條件表達(dá)式與一系列不同的值進(jìn)行比較,這些值提供了相應(yīng)的結(jié)果,該結(jié)果包含取決于查詢中使用的上下文的數(shù)據(jù)類型。

因此,我們可以說 MySQL 中的 CASE 語句使查詢代碼更加高效和可讀。

到此這篇關(guān)于MySQL基礎(chǔ)入門之Case語句用法的文章就介紹到這了,更多相關(guān)MySQL Case語句用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

參看文章:

MySQL CASE Statement

相關(guān)文章

  • MySQL同步ES(Elasticsearch)的四種常見方案分享

    MySQL同步ES(Elasticsearch)的四種常見方案分享

    MySQL和Elasticsearch(ES)是兩個(gè)非常重要的數(shù)據(jù)存儲(chǔ)和搜索技術(shù),MySQL是一種關(guān)系型數(shù)據(jù)庫,而ES則是一種文檔型數(shù)據(jù)庫,在許多情況下,我們需要將MySQL中的數(shù)據(jù)同步到ES中,本文將介紹四種常見的MySQL同步ES方案,需要的朋友可以參考下
    2023-07-07
  • mysql服務(wù)性能優(yōu)化—my.cnf_my.ini配置說明詳解(16G內(nèi)存)

    mysql服務(wù)性能優(yōu)化—my.cnf_my.ini配置說明詳解(16G內(nèi)存)

    這篇文章主要介紹了mysql服務(wù)性能優(yōu)化—my.cnf_my.ini配置說明詳解(16G內(nèi)存),需要的朋友可以參考下
    2016-05-05
  • mysql索引失效的幾種情況分析

    mysql索引失效的幾種情況分析

    這篇文章主要給大家介紹了關(guān)于mysql索引失效的情況,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL高級(jí)進(jìn)階sql語句總結(jié)大全

    MySQL高級(jí)進(jìn)階sql語句總結(jié)大全

    這篇文章主要給大家介紹了關(guān)于MySQL高級(jí)進(jìn)階sql語句的相關(guān)資料,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • MySql 5.7.21免安裝版本win10下的配置方法

    MySql 5.7.21免安裝版本win10下的配置方法

    這篇文章主要介紹了MySql 5.7.21免安裝版本win10下的配置方法,本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2018-05-05
  • MySQL實(shí)戰(zhàn)之Insert語句的使用心得

    MySQL實(shí)戰(zhàn)之Insert語句的使用心得

    這篇文章主要給大家介紹了關(guān)于MySQL實(shí)戰(zhàn)之Insert語句的使用心得的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Linux/Mac MySQL忘記密碼命令行修改密碼的方法

    Linux/Mac MySQL忘記密碼命令行修改密碼的方法

    這篇文章主要介紹了Linux/Mac MySQL忘記密碼命令行修改密碼的方法,需要的朋友可以參考下
    2017-05-05
  • 準(zhǔn)確獲取MySQL主從延遲時(shí)間的方法

    準(zhǔn)確獲取MySQL主從延遲時(shí)間的方法

    既然是主從,是讀寫分離,那就不可避免會(huì)產(chǎn)生延遲,因?yàn)閿?shù)據(jù)從主機(jī)同步到從機(jī),總是需要時(shí)間的,那么如何準(zhǔn)確獲取主從延遲的時(shí)間呢,本文小編給大家詳細(xì)介紹了準(zhǔn)確獲取MySQL主從延遲時(shí)間的方法,需要的朋友可以參考下
    2025-03-03
  • MySql中如何使用 explain 查詢 SQL 的執(zhí)行計(jì)劃

    MySql中如何使用 explain 查詢 SQL 的執(zhí)行計(jì)劃

    explain命令是查看查詢優(yōu)化器如何決定執(zhí)行查詢的主要方法。這篇文章重點(diǎn)給大家介紹MySql中如何使用 explain 查詢 SQL 的執(zhí)行計(jì)劃,感興趣的朋友一起看看吧
    2018-05-05
  • MySQL日志專項(xiàng)之redo log和undo log介紹

    MySQL日志專項(xiàng)之redo log和undo log介紹

    MySQL日志記錄了MySQL數(shù)據(jù)庫日常操作和錯(cuò)誤信息,MySQL有不同類型的日志文件(各自存儲(chǔ)了不同類型的日志),從日志當(dāng)中可以查詢到MySQL數(shù)據(jù)庫的運(yùn)行情況、用戶操作、錯(cuò)誤信息等
    2022-08-08

最新評(píng)論

昌黎县| 米脂县| 探索| 新绛县| 淮阳县| 宜宾县| 和硕县| 甘南县| 集贤县| 抚顺县| 宁河县| 神木县| 梧州市| 淮北市| 农安县| 思茅市| 惠东县| 莱阳市| 佛教| 顺平县| 余干县| 永州市| 嘉兴市| 修文县| 凤山市| 磴口县| 福安市| 百色市| 个旧市| 观塘区| 疏勒县| 河北省| 铜川市| 错那县| 威信县| 雅江县| 长沙市| 浙江省| 安达市| 吉林省| 蓝田县|