欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中Case?When用法及說明

 更新時間:2022年12月29日 14:25:20   作者:追夢菜鳥  
這篇文章主要介紹了MySQL中Case?When用法及說明,具有很好的參考價值,希望對大家有所幫助。

最近,在學習Hive基礎知識時,遇到了遇到了Case When Else End語法,以前學習MySQL時忽略了這部分知識點,現(xiàn)總結一下相關的知識給大家。

首先練習一個例子如下:

一、學生課程成績統(tǒng)計

1) 建表

use hiveDemo;
CREATE TABLE `course` (
  `id` int,
  `sid` int ,
  `course` string,
  `score` int 
) ;

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

// 字段解釋:id, 學號, 課程, 成績
INSERT INTO `course` VALUES (1, 1, 'yuwen', 43);
INSERT INTO `course` VALUES (2, 1, 'shuxue', 55);
INSERT INTO `course` VALUES (3, 2, 'yuwen', 77);
INSERT INTO `course` VALUES (4, 2, 'shuxue', 88);
INSERT INTO `course` VALUES (5, 3, 'yuwen', 98);
INSERT INTO `course` VALUES (6, 3, 'shuxue', 65);

3) 需求

求:所有數(shù)學課程成績 大于 語文課程成績的學生的學號

最開始的想法是打算同過自連接的方式來解決,后來咨詢了公司的同事,知道了可以case可以用來解決此問題。

a. 使用case...when...將不同的課程名稱轉換成不同的列。 

create view tmp_course_view as
select sid, case course when "shuxue" then score else 0 end  as shuxue,  
case course when "yuwen" then score else 0 end  as yuwen from course;  
 
select * from tmp_course_view;

 

b. 以sid分組合并取各成績最大值

create view tmp_course_view1 as
select aa.sid, max(aa.shuxue) as shuxue, max(aa.yuwen) as yuwen from tmp_course_view aa group by sid;  
 
select * from tmp_course_view1;

c. 比較結果

select * from tmp_course_view1 where shuxue > yuwen;

二、Case When Else End用法詳解

1) 更新

update table  
set 字段1=case     
    when 條件1 then 值1       
    when 條件2 then 值2      
    else 值3      
    end     
where    …… 

2) 查詢

select 字段1, 字段2,       
    case 字段3     
    when 值1 then 新值       
    when 值2 then 新值      
    end as 重新命名字段3的名字       
from table      
where ……      
order by ……  

在一般的SELECT中,其語法如下:   

sql 中 case when 語法在這里添加日志標題 - 錢途無梁 - Notebook of 錢途無梁SELECT <myColumnSpec> =?
sql 中 case when 語法在這里添加日志標題 - 錢途無梁 - Notebook of 錢途無梁CASE?
sql 中 case when 語法在這里添加日志標題 - 錢途無梁 - Notebook of 錢途無梁WHEN <A> THEN <somethingA>?
sql 中 case when 語法在這里添加日志標題 - 錢途無梁 - Notebook of 錢途無梁WHEN <B> THEN <somethingB>?
sql 中 case when 語法在這里添加日志標題 - 錢途無梁 - Notebook of 錢途無梁ELSE <somethingE>?
sql 中 case when 語法在這里添加日志標題 - 錢途無梁 - Notebook of 錢途無梁END?

CASE可能是 SQL 中被誤用最多的關鍵字之一。

雖然你可能以前用過這個關鍵字來創(chuàng)建字段,但是它還具有更多用法。

例如,你可以在 WHERE、GROUP BY和Order By子句中使用CASE。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • MySQL多層級結構-區(qū)域表使用樹詳解

    MySQL多層級結構-區(qū)域表使用樹詳解

    前面我們大概介紹了一下樹結構表的基本使用。在我們項目中有好幾塊有用到多層級的概念。下面我們哪大家都比較熟悉的區(qū)域表來做演示
    2016-07-07
  • SQL結果如何根據(jù)某個字段取最新時間去重

    SQL結果如何根據(jù)某個字段取最新時間去重

    在日常的項目開發(fā)當中,經(jīng)常會遇到獲取同一屬性相同的記錄,如何獲取記錄時間最新的那一條,下面這篇文章主要給大家介紹了關于SQL結果如何根據(jù)某個字段取最新時間去重的相關資料,需要的朋友可以參考下
    2023-06-06
  • 詳解數(shù)據(jù)庫連接的URL的寫法及總結

    詳解數(shù)據(jù)庫連接的URL的寫法及總結

    這篇文章主要介紹了詳解數(shù)據(jù)庫連接的URL的寫法及總結的相關資料這里提供了四種方法1、oracle.2、MySQL.3、SQL Server.4、DB2,需要的朋友可以參考下
    2017-07-07
  • MySQL Order By Rand()效率分析

    MySQL Order By Rand()效率分析

    本文詳細解說了MySQL Order By Rand()效率優(yōu)化的方案,并給出了優(yōu)化的思路過程,是篇不可多得的MySQL Order By Rand()效率美文
    2012-07-07
  • MySQL之join查詢優(yōu)化方式

    MySQL之join查詢優(yōu)化方式

    這篇文章主要介紹了MySQL之join查詢優(yōu)化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Mysql分庫分表之后主鍵處理的幾種方法

    Mysql分庫分表之后主鍵處理的幾種方法

    Mysql分庫分表之后,主鍵如何處理?本文主要介紹了Mysql分庫分表之后主鍵處理的幾種方法,具有一定的參考價值,感興趣的可以了解一下
    2022-02-02
  • MySQL 1130異常,無法遠程登錄解決方案詳解

    MySQL 1130異常,無法遠程登錄解決方案詳解

    這篇文章主要介紹了MySQL 1130異常,無法遠程登錄解決方案詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • mysql 索引詳細介紹

    mysql 索引詳細介紹

    這篇文章主要介紹了mysql 索引詳細介紹的相關資料,需要的朋友可以參考下
    2016-09-09
  • mysql性能監(jiān)控工具Innotop簡介及配置

    mysql性能監(jiān)控工具Innotop簡介及配置

    INNOTOP是一個通過文本模式顯示MySQL和InnoDB的監(jiān)測工具。INNOTOP是用PERL語言寫成的,這使它能更加靈活的使用在各種操作平臺之上,它能詳細的的監(jiān)控出當前MYSQL和INNODB運行的狀態(tài),以DBA根據(jù)結果,可以合理的優(yōu)化MYSQL,讓MYSQL更穩(wěn)定更高效的運行。
    2014-08-08
  • 巧用mysql提示符prompt清晰管理數(shù)據(jù)庫的方法

    巧用mysql提示符prompt清晰管理數(shù)據(jù)庫的方法

    隨著管理mysql服務器越來越多,同樣的mysql>的提示符有可能會讓你輸入錯誤的命令到錯誤的數(shù)據(jù)庫,這時候需要巧用mysql的提示符,這是我的提示符root@localhost(mysql) 08:55:21> 用prompt命令實現(xiàn)(適用于windows和linux環(huán)境)
    2009-08-08

最新評論