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

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

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

引言

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

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

CASE 的語(yǔ)法

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

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

這部分允許在 MySQL 的查詢中添加邏輯 CASE 語(yǔ)句。為了生成有效的語(yǔ)句,我們?cè)谌魏蔚胤绞褂脦в?WHERE SELECT 和 ORDER BY 等子句的 CASE 語(yǔ)句。您可以通過(guò)如下所示的語(yǔ)法進(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 語(yǔ)句在 MySQL 中是如何工作的?

CASE 語(yǔ)句包含兩個(gè)過(guò)程:一個(gè)是 Simple CASE,另一個(gè)是 Searched CASE。我們使用 CASE 語(yǔ)句根據(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)我們?cè)?SELECT 查詢中應(yīng)用 CASE 語(yǔ)句來(lái)獲取滿足特定 case 條件的特定值時(shí)。在上圖中,我們將 CASE 語(yǔ)句放在 State 和 City 列上,如果 State 列包含 NULL 值,則查詢顯示 City 列值,如果 case 語(yǔ)句無(wú)效或找不到值,則顯示部分值,即 State返回列值。在這里,我們使用 ORDER BY 子句獲取了應(yīng)用 CASE 的學(xué)生、州和城市的名稱,以對(duì)結(jié)果行進(jìn)行排序。

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

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

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

帶有 SELECT 和 ORDER BY 子句的 CASE 語(yǔ)句

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

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

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

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 語(yǔ)句

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

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

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

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

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 語(yǔ)句顯示表數(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 語(yǔ)句

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ù),但是還是不夠一目了然。接下來(lái)使用case語(yǔ)句查詢?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 語(yǔ)句允許對(duì) SQL 查詢執(zhí)行 IF ELSE 邏輯,以檢查條件語(yǔ)句并從數(shù)據(jù)庫(kù)表中獲取所需的結(jié)果集或值。

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

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

到此這篇關(guān)于MySQL基礎(chǔ)入門之Case語(yǔ)句用法的文章就介紹到這了,更多相關(guān)MySQL Case語(yǔ)句用法內(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ù)庫(kù),而ES則是一種文檔型數(shù)據(jù)庫(kù),在許多情況下,我們需要將MySQL中的數(shù)據(jù)同步到ES中,本文將介紹四種常見的MySQL同步ES方案,需要的朋友可以參考下
    2023-07-07
  • mysql服務(wù)性能優(yōu)化—my.cnf_my.ini配置說(shuō)明詳解(16G內(nèi)存)

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

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

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

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

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

    這篇文章主要給大家介紹了關(guān)于MySQL高級(jí)進(jìn)階sql語(yǔ)句的相關(guān)資料,文中通過(guò)圖文以及實(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語(yǔ)句的使用心得

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

    這篇文章主要給大家介紹了關(guān)于MySQL實(shí)戰(zhàn)之Insert語(yǔ)句的使用心得的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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ù)庫(kù)日常操作和錯(cuò)誤信息,MySQL有不同類型的日志文件(各自存儲(chǔ)了不同類型的日志),從日志當(dāng)中可以查詢到MySQL數(shù)據(jù)庫(kù)的運(yùn)行情況、用戶操作、錯(cuò)誤信息等
    2022-08-08

最新評(píng)論

察隅县| 城市| 卓尼县| 台江县| 达拉特旗| 田阳县| 兰坪| 洪泽县| 永丰县| 临猗县| 蕲春县| 甘孜县| 会同县| 新民市| 龙里县| 滨海县| 马鞍山市| 大兴区| 宜宾市| 呼玛县| 榆林市| 布拖县| 巴林右旗| 喀什市| 重庆市| 会宁县| 兴义市| 偏关县| 吴川市| 勃利县| 西充县| 夏邑县| 四平市| 曲靖市| 天津市| 和龙市| 正阳县| 禄劝| 宁海县| 葵青区| 镇江市|