Sql中case函数的2种用法:
case函数一般用来做结果集字段的替换,生成一个新列,相当于switch…case or if begin …end else begin….end等 。
1.简单case函数
语法:
--Simple CASE expression: CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END
中文格式:
--简单的case函数 case when 条件表达式1 then 结果1 when 条件表达式2 then 结果2 ...... when 条件表达式n then 结果n else 结果n+1 end as '列名'
例如:
Select Id ,Name ,Gender case Classid when 1 then '023班' when 2 then '024班' when 3 then '025班’ else '非本专业' end as '班级' from Teacher
2.搜索case函数
语法:
--Searched CASE expression: CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END
中文格式:
--搜索case函数: case when 判断表达式1 Then 结果1 when 判断表达式2 Then 结果2 ..... when 判断表达式n Then 结果n else 结果n+1 end as '列名'
例如:
select Id, Name ,Gender ,Age case when Age <18 then '少年' when Age >20 then '青年' when Age is null then '不晓得' when Gender = True then '男’ else '青少年' end as '学生类型' from Teacher
注意:相当于if …else 判断函数,但是不能判断NULL值,case函数常用于分组统计。
2种子查询(subquery)
查询一般是指select 语句,子查询简单来说就是嵌套在查询语句中作为查询条件查询语句。
子查询步骤:
1.将检索或者查询的问题进行解析,将其分开成按逻辑排列的单句查询
2.大家查询构架。
3.运用关键词对查询构架进行填充单句子查询。
1.独立子查询:
第一类:单行子查询,
where条件子句子查询,一般跟在(=、!=、<、<=、>、>=)之后。
select * from Teacher where Age >(select Age from Teacher where Name = 'cc')
分析:先子句再父句(剥皮法)
1.子句:查询出表Teacher中,名字为cc的老师的年龄。
2.父句:检索出表Teacher中,年龄大于cc老师年龄的老师的名单详细信息。
第二类:多行子查询,
in or not in(多结果集)子查询,返回多个值。还有(all、any、函数min,max等)
select * from Teacher where Age,Gender in (select Age from Teacher where Name = 'cc')
注:in or not in常用于测试一个给定的比较值有没有出现在一个特定的结果集中。
第三类:关联子查询,
exists or not exists条件子句子查询
if exists (select * from sysdatabases where name = 'TestSchool') drop database TestSchool
注:exists 检测查询数据是否存在 。
2.相关子查询:
相关子查询依赖于外部查询,子查询引用了父查询的相关结果集。
第一类:作为结果集
select * from (select * from Teacher where Classid = 2) temp where Gender = True
第二类:作为列的值
select (select Name from newTeacher where newTeacher.Name =Teacher.Name) Salary from Teacher
注:相关子查询的效率相对较低,子查询的性能完全依赖于查询和有关的数据。
子查询语句一般不宜过多:
- 子查询为嵌套查询,嵌套过多,越复杂,可读性就越差。
- 子查询使用过多,会严重消耗性能。
- 子查询使用不利于sql语句的调试,问题的排查。
查询的一般方法:
1.表联合(union、join):合并多个数据集中的行.
2.子查询(subquery):将一个查询嵌套在另一个查询中.
3.表连接(inner join):合并多个数据表中的列.
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/16651.html