mysql中case when then语句咋用
发布时间:2022-01-12 12:21:08 所属栏目:MySql教程 来源:互联网
导读:小编给大家分享一下mysql中case when then语句怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 建表: create table hank (id int,name varchar(20)); 插入数据: in
小编给大家分享一下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语句怎么用”这篇文章的所有内容,感谢各位的阅读! (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |