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

MySQL中case?when的兩種基本用法及區(qū)別總結(jié)

 更新時(shí)間:2023年05月05日 10:03:12   作者:Backcanhave7  
在mysql中case when用于計(jì)算條件列表并返回多個(gè)可能結(jié)果表達(dá)式之一,下面這篇文章主要給大家介紹了關(guān)于MySQL中case?when的兩種基本用法及區(qū)別的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下

MySQL中的case when有用兩種用法,官方文檔中的說明如下:

用法一:

CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END CASE

用法二:

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE

下面通過具體示例來說明case when這兩種用法的區(qū)別:

創(chuàng)建salary表,并向salary表中插入數(shù)據(jù):

# 創(chuàng)建salary表:
create table salary(
id int,
name char(1),
sex char(1),
salary int
)engine myisam charset utf8;
#向salary表中插入數(shù)據(jù):
insert into salary values
(1,'A','m',2500),
(2,'B','f',1500),
(3,'C','m',5500),
(4,'D','f',500);

示例一:在查詢語句中實(shí)現(xiàn)更改salary表中員工的性別,即如果員工的性別是‘m’,則將其改為‘f’,反之如果性別為‘f’,則將其改為‘m’。

采用case when的第一種用法:

select id,name,
case sex
when 'f' then 'm'
else 'f' end as new_sex,salary from salary;

這種用法通過比較case后面的case_value和第一個(gè)when后面的when_value,若二者相等則給new_sex賦一個(gè)指定的值,若二者值不相等,則比較case_value與第二個(gè)when后面的when_value是否相等,以此類推。若case_value與所有的when_value都不相等,且有else語句的話,則把else后面的值賦給new_sex,否則把null值賦給new_sex。

采用case when的第二種用法:

select id,name,case
when sex='f' then 'm'
else 'f' end as new_sex,salary from salary;

上述代碼中,when后面是一個(gè)邏輯表達(dá)式,若表達(dá)式為真,則把then后面的值賦給new_sex;若第一個(gè)when后面表達(dá)式為假,則查看第二個(gè)when后面的邏輯表達(dá)式,以此類推的;若所有when后面的邏輯表達(dá)式均為假,且有else語句的話,則把else后面的值賦給new_sex,否則把null值賦給new_sex.

示例二:在查詢語句中實(shí)現(xiàn)將salary表中員工的工資歸類。歸類依據(jù)是,工資在1000元以下的歸為‘low’類,工資在1000-3000元范圍歸為‘middle’類,工資在3000元以上的歸為‘high’類。

這種情況只能采用case when的第二種用法:

select id,name,sex,case
when salary > 3000 then 'high'
when salary between 1000 and 3000 then 'middle'
else 'low' end as salary_level from salary;

假如以3000元為界限,將3000元以上的工資歸為‘high'類,3000元以下包括3000元的工資歸為‘low’類,則此時(shí)也可以采用case when的第一種用法:

select id,name,sex,case salary>3000
when True then 'high'
else 'low' end as salary_level from salary;

總結(jié):由前文所述可知,case when的第一類用法只適用于二值比較問題,而case when的第二種用法的適用范圍更廣。因此我將case when的第一中用法理解為簡單條件賦值,第二種用法理解為復(fù)雜條件賦值。

補(bǔ)充:MySQL中的case when 中對(duì)于NULL值判斷

總結(jié)

到此這篇關(guān)于MySQL中case when的兩種基本用法及區(qū)別總結(jié)的文章就介紹到這了,更多相關(guān)MySQL中case when用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL5.7.10 安裝文檔教程詳解

    MySQL5.7.10 安裝文檔教程詳解

    這篇文章主要介紹了MySQL5.7.10 安裝文檔教程詳解,需要的朋友可以參考下
    2017-02-02
  • MySQL產(chǎn)生隨機(jī)數(shù)并連接字符串的方法示例

    MySQL產(chǎn)生隨機(jī)數(shù)并連接字符串的方法示例

    這篇文章主要介紹了MySQL產(chǎn)生隨機(jī)數(shù)并連接字符串的方法,簡單分析了相關(guān)函數(shù),并結(jié)合實(shí)例形式給出了相應(yīng)的SQL語句實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-05-05
  • MySQL聯(lián)合查詢實(shí)現(xiàn)方法詳解

    MySQL聯(lián)合查詢實(shí)現(xiàn)方法詳解

    聯(lián)合查詢union將多次查詢(多條select語句)的結(jié)果,在字段數(shù)相同的情況下,在記錄的層次上進(jìn)行拼接,這篇文章主要給大家介紹了關(guān)于Mysql聯(lián)合查詢的那些事兒,需要的朋友可以參考下
    2022-11-11
  • MySQL中select語句使用order按行排序

    MySQL中select語句使用order按行排序

    本文介紹MySQL數(shù)據(jù)庫中執(zhí)行select查詢語句,并對(duì)查詢的結(jié)果使用order by 子句進(jìn)行排序
    2016-04-04
  • MySQL索引的缺點(diǎn)以及MySQL索引在實(shí)際操作中有哪些事項(xiàng)

    MySQL索引的缺點(diǎn)以及MySQL索引在實(shí)際操作中有哪些事項(xiàng)

    以下的文章主要介紹的是MySQL索引的缺點(diǎn)以及MySQL索引在實(shí)際操作中有哪些事項(xiàng)是值得我們大家注意的,我們大家可能不知道過多的對(duì)索引進(jìn)行使用將會(huì)造成濫用,需要的朋友可以了解下
    2012-12-12
  • 解讀索引列中有null值會(huì)不會(huì)使索引失效

    解讀索引列中有null值會(huì)不會(huì)使索引失效

    這篇文章主要介紹了解讀索引列中有null值會(huì)不會(huì)使索引失效問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 讓MySQL中某個(gè)表的操作不生成binlog日志的問題解決

    讓MySQL中某個(gè)表的操作不生成binlog日志的問題解決

    文章介紹了四種方法讓MySQL中某個(gè)表的操作不生成binlog日志:會(huì)話級(jí)臨時(shí)關(guān)閉binlog、通過復(fù)制過濾規(guī)則、調(diào)整binlog格式和全局禁用binlog,每種方法都有其適用場景和局限性,建議優(yōu)先使用會(huì)話級(jí)臨時(shí)關(guān)閉方法,并根據(jù)具體需求選擇合適的方案,感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • 使用Canal和Kafka解決MySQL與緩存的數(shù)據(jù)一致性問題

    使用Canal和Kafka解決MySQL與緩存的數(shù)據(jù)一致性問題

    這篇文章主要介紹了使用Canal和Kafka解決MySQL與緩存的數(shù)據(jù)一致性問題,文中通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-07-07
  • CentOS系統(tǒng)下如何設(shè)置mysql每天自動(dòng)備份

    CentOS系統(tǒng)下如何設(shè)置mysql每天自動(dòng)備份

    備份是容災(zāi)的基礎(chǔ),是指為防止系統(tǒng)出現(xiàn)操作失誤或系統(tǒng)故障導(dǎo)致數(shù)據(jù)丟失,而將全部或部分?jǐn)?shù)據(jù)集合從應(yīng)用主機(jī)的硬盤或陣列復(fù)制到其它的存儲(chǔ)介質(zhì)的過程。本文將詳細(xì)介紹在CentOS系統(tǒng)下如何設(shè)置mysql每天自動(dòng)備份,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • Navicat出現(xiàn)無法遠(yuǎn)程連接MySql服務(wù)器問題的解決辦法

    Navicat出現(xiàn)無法遠(yuǎn)程連接MySql服務(wù)器問題的解決辦法

    這篇文章主要介紹了Navicat出現(xiàn)無法遠(yuǎn)程連接MySql服務(wù)器問題的解決辦法,文章通過思路判斷出現(xiàn)問題的情況,然后進(jìn)行逐一排查,確定問題出現(xiàn)的原因并給出解決辦法,本文對(duì)此問題的解決介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08

最新評(píng)論

乐都县| 栾城县| 始兴县| 台东县| 常德市| 罗田县| 阿勒泰市| 昌平区| 韩城市| 平乡县| 明溪县| 四会市| 灵石县| 锡林浩特市| 梁平县| 陆良县| 辽宁省| 孝昌县| 龙岩市| 济源市| 龙南县| 十堰市| 龙海市| 密山市| 普兰店市| 伊通| 正安县| 诸城市| 平湖市| 浮梁县| 临漳县| 昭觉县| 长泰县| 察雅县| 雷州市| 西乡县| 平度市| 达拉特旗| 灵武市| 东阿县| 区。|