中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中case when then語句怎么用

發布時間:2021-10-27 17:35:10 來源:億速云 閱讀:776 作者:小新 欄目:MySQL數據庫

小編給大家分享一下mysql中case when then語句怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

建表:
create table hank (id int,name varchar(20));

插入數據:
insert into hank values(1,'A');
insert into hank values(2,'B');
insert into hank values(3,'C');

通過case when then更新數據:
update hank set name = case id 
when 1 then 'D'
when 2 then 'E'
when 3 then 'F'
end
where id in(1,2,3);

sql的意思是,更新name字段,如果id=1 則name的值為D,如果id=2 則 name 的值為E,如果id=3 則 name 的值為F。
即是將條件語句寫在了一起。
這里的where部分不影響代碼的執行,但是會提高sql執行的效率。確保sql語句僅執行需要修改的行數,這里只有3條數據進行更新,而where子句確保只有3行數據執行


表的創建
CREATE TABLE `lee` (
`id` int(10) NOT NULL AUTO_INCREMENT, 
`name` char(20) DEFAULT NULL, 
`birthday` datetime DEFAULT NULL, 
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

數據插入:
insert into lee(name,birthday) values ('sam','1990-01-01');
insert into lee(name,birthday) values ('lee','1980-01-01');
insert into lee(name,birthday) values ('john','1985-01-01');


第一種用法:
SELECT name,
CASE WHEN birthday < '1981' THEN 'old' 
WHEN birthday > '1988' THEN 'yong'
ELSE 'ok' END YORN
FROM lee

第二種用法:
SELECT NAME, CASE name
WHEN 'sam' THEN 'yong'
WHEN 'lee' THEN 'handsome'
ELSE 'good' END as oldname
FROM lee

第三種:當然了,case when 語句還可以復合
select name, birthday,
case 
when birthday > '1983' then 'yong'
when name='lee' then 'handsome'
else 'just so so' end
from lee;


在這里用sql語句進行日期比較的話,需要對年加引號,要不然可能結果和預期的結果不同, 
當然也可以用year函數來實現
select name,
case when year(birthday) > 1988 then 'yong'
when year(birthday) < 1980 then 'old'
else 'ok' END
from lee;


==========================================================
create table penalties
(
paymentno INTEGER not NULL,
payment_date DATE not null,
amount DECIMAL(7,2) not null,
primary key(paymentno)
)


insert into penalties values(1,'2008-01-01',3.45);
insert into penalties values(2,'2009-01-01',50.45);
insert into penalties values(3,'2008-07-01',80.45);


第一題:對罰款登記分為三類,第一類low,包括大于0小于等于40的罰款,第二類moderate大于40到80之間的罰款,第三類high包含所有大于80的罰款


select payment_date, amount,
case 
when amount >= 0 AND amount < 40 then 'low'
when amount >=40 AND amount < 80 then 'moderate'
when amount >=80 then 'high' 
else 'null' END
FROM penalties

第二題:統計出屬于low的罰款編號
select * from 
( select paymentno, amount,
case 
when amount >= 0 AND amount < 40 then 'low'
when amount >=40 AND amount < 80 then 'moderate'
when amount >=80 then 'high' 
else 'incorrect' end lvl
from penalties) as p
where p.lvl = 'low'

以上是“mysql中case when then語句怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武强县| 冀州市| 南江县| 车险| 阜阳市| 元氏县| 论坛| 通许县| 且末县| 资溪县| 炉霍县| 广平县| 佛坪县| 板桥市| 湟源县| 武乡县| 新巴尔虎右旗| 子长县| 苗栗市| 广灵县| 侯马市| 阿克陶县| 山丹县| 恩平市| 遂平县| 长治市| 凤冈县| 繁昌县| 勐海县| 开化县| 宁武县| 兴安县| 延边| 辽源市| 广元市| 友谊县| 秭归县| 曲水县| 神池县| 泗洪县| 桂东县|