<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
MySQL CASE 是一個 MySQL 語句查詢關鍵字,它定義了處理迴圈概念以執行條件集並使用 IF ELSE 返回匹配案例的方式。 MySQL 中的 CASE 是一種控制語句,它驗證條件案例集,並在第一個案例滿足 else 值時顯示值並退出迴圈。
如果沒有找到 TRUE 且語句沒有 ELSE 部分或值,則 CASE 返回 NULL。基本上,CASE 語句類似於 IF THEN ELSE 邏輯迴圈語句。在 MySQL 伺服器上執行時,它會讀取條件表示式,當表示式大小寫匹配時,nit 會顯示結果。之後,它會進一步停止執行。
下面的語法定義了 CASE 語句 SQL 查詢結構:
CASE WHEN cond1 THEN value1 WHEN cond2 THEN value2 WHEN condN THEN valueN ELSE value END;
這部分允許在 MySQL 的查詢中新增邏輯 CASE 語句。為了生成有效的語句,我們在任何地方使用帶有 WHERE SELECT 和 ORDER BY 等子句的 CASE 語句。您可以通過如下所示的語法進行評估:
SELECT column1,column2, CASE WHEN cond1 THEN value1 WHEN cond2 THEN value2 WHEN condN THEN valueN ELSE value END FROM TableName;
CASE 語句包含兩個過程:一個是 Simple CASE,另一個是 Searched CASE。我們使用 CASE 語句根據匹配條件提供結果值,使用邏輯控制方法與 SQL 子句(如 SELECT、WHERE 和 ORDER BY)一起為 SQL 查詢提供結果值。
假設,下面的查詢解釋了 CASE 邏輯部分,其中我們提到了一個像 Student 的表,其中包含欄位 StudentName、State、City,那麼查詢將被寫為:
SELECT StudentName, State, City FROM Students ORDER BY ( CASE WHEN State IS NULL THEN City ELSE State END);
從這裡我們將知道,當我們在 SELECT 查詢中應用 CASE 語句來獲取滿足特定 case 條件的特定值時。在上圖中,我們將 CASE 語句放在 State 和 City 列上,如果 State 列包含 NULL 值,則查詢顯示 City 列值,如果 case 語句無效或找不到值,則顯示部分值,即 State返回列值。在這裡,我們使用 ORDER BY 子句獲取了應用 CASE 的學生、州和城市的名稱,以對結果行進行排序。
在 Simple CASE 中,CASE 的列值與 WHEN 子句中的條件語句值匹配以實現等價性,然後在語法中的一個之後生成結果值。但如果沒有相等的值,則返回 ELSE 部分值(如果提供)。
您不應在 WHEN 子句值中使用 NULL,因為如果執行,邏輯部分將為 NULL = NULL,結果為 FALSE。
現在對於 Search CASE,它遵循與 Simple CASE 相同的邏輯過程,但搜尋案例的一部分使其執行起來有所不同。在這裡,滿足 MySQL 資料型別的值的 CASE 是基於它用於的上下文。例如,如果語句中使用了字串上下文,則結果值將採用相同的資料型別,字串。此外,如果 CASE 條件表示式使用數位上下文,則返回的值將是整數、小數或實數值資料型別。
建立資料庫表
CREATE TABLE Students(StudentID int, StudentName varchar(255), State varchar(255), City varchar(255));
往資料庫插入新值
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 ');
查詢資料
SELECT * FROM Students;
帶有 SELECT 查詢的 CASE 語句
SELECT StudentName, State, City FROM Students ORDER BY ( CASE WHEN State IS NULL THEN City ELSE State END);
我們將使用 CASE 語句和 SUM()
MySQL 函數按訂單狀態從 Orders 表中計算總銷售額。
建立資料庫表
CREATE TABLE Orders (OrderID int,SalesID int, OrderStatus varchar(255) );
插入資料
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 語句顯示錶資料
SELECT * FROM Orders;
得到的資料如下:
10 1 Shipped
11 2 Shipped
12 3 Not Developed
13 4 Success
14 5 In Process
15 6 Cancelled
在 SQL SELECT 查詢中使用 SUM() 和 COUNT 作為聚合函數的 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;
執行結果:
現有表資料如下圖所示(性別列中,1表示男,2表示女):
需統計各年級男女人數。雖然表中資料已有各年級的男女人數,但是還是不夠一目瞭然。接下來使用case語句查詢如下:
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;
結果如下:
這是最經典的case行轉列用法。
MySQL CASE 語句允許對 SQL 查詢執行 IF ELSE 邏輯,以檢查條件語句並從資料庫表中獲取所需的結果集或值。
我們只能將 CASE 語句與儲存過程、儲存事件、函數和觸發器一起使用。它用於將條件表示式與一系列不同的值進行比較,這些值提供了相應的結果,該結果包含取決於查詢中使用的上下文的資料型別。
因此,我們可以說 MySQL 中的 CASE 語句使查詢程式碼更加高效和可讀。
到此這篇關於MySQL基礎入門之Case語句用法的文章就介紹到這了,更多相關MySQL Case語句用法內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
參看文章:
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45