case when then嵌套子查询

case when then嵌套子查询Sql中case函数的2种用法:case函数一般用来做结果集字段的替换,生成一个新列,相当于switch…case or if begin …end else begin….end等 。1.简单case函数

case when then嵌套子查询

Sql中case函数的2种用法:

case函数一般用来做结果集字段的替换,生成一个新列,相当于switch…case or if begin …end else begin….end等 。

case when then嵌套子查询

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 语句,子查询简单来说就是嵌套在查询语句中作为查询条件查询语句。

case when then嵌套子查询

子查询步骤:

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 

注:相关子查询的效率相对较低,子查询的性能完全依赖于查询和有关的数据。

子查询语句一般不宜过多:

  1. 子查询为嵌套查询,嵌套过多,越复杂,可读性就越差。
  2. 子查询使用过多,会严重消耗性能。
  3. 子查询使用不利于sql语句的调试,问题的排查。

查询的一般方法:

1.表联合(union、join):合并多个数据集中的行.

2.子查询(subquery):将一个查询嵌套在另一个查询中.

3.表连接(inner join):合并多个数据表中的列.

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/16651.html

(0)
上一篇 2024年 9月 17日
下一篇 2024年 9月 17日

相关推荐

关注微信