首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2-SQL语言中的函数

...case效果 /* 格式 CASE case_value WHEN when_value THEN statement_list ELSE statement_list END CASE...; INNER可以省略 筛选条件放在where后面,连接条件放在on后面,提高分离性,便于阅读 */ # 等值连接 # 查询部门名与员工名 SELECT last_name,department_name...`department_id`; # 外连接 /* 用于查询一个表中有,另一个表中没有的记录 特点: 外连接的查询结果为主表中的所有记录 如果表中有和它匹配,则显示匹配的值 如果没有匹配值...分类: 按子查询出现的位置: SELECT 后面(仅支持标量子查询) FROM 后面(支持表子查询) WHERE或HAVING后面(标量子查询,列子查询,行子查询) EXISTS 后面(表子查询)按结果集的行列数不同...行子查询(多行多列) 特点: 子查询放在小括号内 子查询一般放在条件右侧 标量子查询一般搭配单行操作符使用(>,=,等等) 列子查询一般搭配多行操作符使用(in,any/some

2.8K10

【重学 MySQL】八十二、深入探索 CASE 语句的应用

AS department 在 WHERE子句中使用 CASE 语句还可以用于在 WHERE 子句中根据不同的条件应用不同的过滤条件。...:虽然 CASE 语句可以在 WHERE 子句中使用,但通常建议尽量避免,因为可能会影响查询性能。...更好的做法是使用逻辑运算符(如 AND、OR )来组合条件。 在 ORDER BY 子句中使用 可以根据某个字段的值动态地改变排序顺序。...如果希望在没有匹配项时返回特定的值或进行特定的处理,应使用 ELSE 子句。 CASE 语句中的条件是按顺序评估的,一旦找到满足条件的分支,就会执行该分支中的命令并结束 CASE 语句的执行。...因此,在编写 CASE 语句时,应注意条件的顺序和逻辑关系。 在使用 CASE 语句时,应确保条件表达式和比较值的类型匹配,以避免类型不匹配导致的错误或不正确的结果。

17610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    T-SQL基础(一)之简单查询

    在查询筛选中,只返回条件表达式(WHERE、HAVING、ON)运算结果为True的数据。 CHECK约束,返回表达式运算结果不为False的结果。...如,WHERE子句中的多个表达式的计算并没有确定的顺序。 CASE...WHEN... CASE表达式是标量表达式,返回一个符合条件的值。注意,CASE是表达式,不是语句,与COUNT类似。...CASE表达式有两种使用方式: CASE后面带有列名 这种情况下,WHEN子句中只能使用标量或返回标量的表达式,这种形式称为简单格式。...CASE后面不带列名 这种情况下,WHEN子句中只能使用逻辑表达式,这种形式称为搜索格式。...通常单表查询仅需一句SELECT语句即可,简单且数据库 联接查询 INNER JOIN、LEFT JOIN、RIGHT JOIN、CROSS JOIN 子查询 SQL可以在一个查询语句中编写另外一个查询语句

    4.2K20

    知识点、SQL语句学习及详细总结

    字符串匹配 Like运算符用于查找指定列中与匹配串匹配的元祖。...在HAVING子句中可以使用聚合函数,但在WHERE子句中不能,通常与GROUP子句一起使用。...可以分组操作之前应用的筛选条件,在WHERE子句中指定它们更有效,这样可以减少参与分组的数据行。在HAVING子句中指定的筛选条件应该是那些必须在执行分组操作之后应用的筛选条件。...内连接与外连接的区别: 内连接:表A与表B进行内连接,则结果为两个表中满足条件的记录集,即C部分。...子查询 如果一个SELECT语句嵌套在另一个SELECT、INSERT、UPDATE或DELETE语句中,则称为子查询或内层查询;而包含子查询的语句称为主查询。

    2K20

    having用法

    HAVING 的关键点与聚合函数配合:HAVING 条件中可以使用聚合函数(如 COUNT、SUM、AVG 等),而 WHERE 条件中不能使用聚合函数。...总结HAVING 是在分组后对分组结果进行筛选,通常与聚合函数配合使用。WHERE 是在分组前对行进行筛选,不能使用聚合函数。如果需要根据聚合结果进行筛选,必须使用 HAVING。...使用场景WHERE:- **行级筛选**:用于在分组之前筛选出符合条件的行。...10的分组说明CASE 语句的:- 将 `CASE` 语句的逻辑分支正确嵌套,并添加了 `ELSE '其他'`,以避免未匹配的情况。...修正后的逻辑查询的目的是统计每个姓氏(如“王”、“邓”)的出现次数,并筛选出出现次数大于 10 的姓氏。如果 code 不属于“王”或“邓”,则归类为“其他”。

    5710

    SQLServer 学习笔记之超详细基础SQL语句 Part 11

    3.CASE-END多分支语句 CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 …… ELSE 其他结果 END ? ?...如果子查询的结果非空,即存在至少1条匹配记录数,则EXISTS (子查询)将返回真(true),否则返回假(false) 2....14 SQL HAVING 子句 HAVING 子句 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。...where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。...having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

    63310

    第35次文章:数据库简单查询

    则返回为0 进阶2:条件查询 一、语法 select 查询列表 from 表名 where 筛选条件; 二、筛选条件的分类 1、简单条件运算符 > 不等于 >...注意:索引是从1开始的。 instr:返回子串第一次出现的索引,如果找不到返回0。...ELSE{ 语句n; } mysql 中: CASE WHEN 条件1 THEN 要显示的值1或语句1; WHEN 条件2 THEN 要显示的值2或语句2; ........having子句中 (2)能用分组前筛选的,就优先考虑使用分组前筛选 2、group by子句支持单个字段分组,多个字段分组(多个字段之间用逗号隔开,没有顺序要求),表达式(使用的较少) 3、也可以添加排序...tips: 案例2中,首先要求部门编号大于1,这个筛选条件我们可以直接在原始表中进行,所以使用的是where关键字,得到了第一步筛选之后的表格——部门编号大于1的各个部门的最低工资。

    1.2K20

    《SQLSERVER2012之T-SQL教程》T-SQL单表查询(二)「建议收藏」

    需要注意的是,CASE是表达式而不是语句,它不允许你控制活动流或是做一些基于条件逻辑的操作。不过,它的返回值是基于条件逻辑的。...此外,IIF和CHOOSE仅在SQL Server2012中可以使用。 ISNULL函数可以接收两个参数作为输入,并返回第一个非NULL的参数值,如果两个参数值均为NULL,则返回NULL。...例如salary>0出现在查询筛选中(WHERE或HAVING),将返回表达式计算为TRUE的行或组,那些结果为FALSE的会被筛选掉。...因为region为NULL的行与NULL比较会得到UNKNOWN,而查询筛选只支持TRUE。...例如,CASE表达式中的WHEN子句的计算顺序是有保证的,可以按如下方式修改: SELECT col1, col2 FROM dbo.T1 WHERE CASE WHEN col1 = 0

    1.8K20

    一文打尽动态SQL

    如果条件为真,则语句为 SELECT * FROM BLOG WHERE state = ‘ACTIVE’AND title like #{title} 否则为 SELECT * FROM BLOG...= null"> AND title like #{title} 上述代码分析: 如果test条件为真,则语句为: SELECT * FROM BLOG WHERE...,相当于直接break 如果第一个when的结果为false,则进入第二个; 如果第二个when的结果也为false,则直接执行otherwise中的内容 我们看一下场景的SQL 第一个when为真 SELECT...> 上述代码分析: 首先它会使用CASE后面的变量和WHEN后面的变量进行比较(这个地方类似于一个switch语句) 如果第一个WHEN匹配,则直接返回THEN以后的值 如果WHEN中没有匹配的直接返回...直接在WHEN语句中书写判断式的语句,和if ELSE相同,也是仅仅执行一个分支 1.4 TRIM WHERE SET 在上面聊if和choose,when,otherwise的时候,我们发现了一个问题

    52310

    MySQL查询优化-基于EXPLAIN

    id 含有子查询的时候,表明各语句执行的先后顺序,如果数字相同,则按照先后顺序执行,如果为 null,则代表是结果集,不需要查询。...any WHERE condition used. where 子句用于限制与下一个表匹配的行记录或发送到客户端的行记录。...Pushdown),即如果你的查询条件里有部分可以走索引,那么则会先将条件推到底层的存储引擎层去做一部分过滤,找到所有符合索引条件的数据行,随后用 WHERE 子句中的其他条件去过滤这些数据行,以此减少查询的条数...存储引擎根据上面的数据,结合where条件,判断是否满足where条件,如果没有满足条件,回到第一步,筛选下一条数据,否则的话,进行下面的判断。...在 server 层筛选没有被下推到存储引擎层 where 条件,满足则使用,否则丢弃。 ? 二、优化经验 要对经常进行搜索,排序,分组的列创建索引。

    1.6K20

    MySQL数据库完整知识点梳理----保姆级教程!!!

    拼接字符串 ifnull函数--判断是否为空 条件查询部分知识点整理 语法 根据筛选条件不同进行分类 1.按条件表达式筛选 2.按照逻辑表达式筛选 3.模糊查询 like的使用 in的使用 is...如果从表中有和它匹配的,则显示匹配的值 如果从表中没有和它匹配的,则显示null 外连接结果=内连接结果+主表中有而从表中没有的记录 左外连接: left join 左边的是主表 右外连接: left...---- 子查询 含义 出现在其他语句中的select语句,成为子查询或者内查询 外部的查询语句,成为主查询或外查询 分类 按子查询出现的位置: select后面: 仅支持标量子查询 from后面: 支持表子查询...,如果是decimal,则M默认为10,D默认为0 如果是float和double,则会根据插入数值的精度来决定精度 3.定点型精度较高,如果要求插入数值的精度较高如货币运算,则考虑使用 4.总结: 所选择的类型越简单越好...如果when中的值满足条件或者成立,执行对应的then后面的语句,并且结束case 如果都不满足,执行else里面的语句或值 else可以省略,如果else省略了,并且所有的when条件都不满足,返回

    6K10

    数据库查询常用语句语法

    如果省略,则MID()函数返回剩余文本 round(f,p)p为1表示f有一位小数,-1表示小数点左边置0 case 可以对数据表进行多重筛选多重选择 CASE允许您在不同的条件下返回不同的值。...如果没有任何条件匹配(也没有其他条件),则返回NULL。...,population from world group by continent having 去掉不符合条件的组 使用group by 子句对数据进行分组,去掉不符合条件的组 WHERE 子句不能包含聚集函数...tableName limit i,n # tableName:表名 # i:为查询结果的索引值(默认从0开始),当i=0时可省略i # n:为查询结果返回的数量 # i与n之间使用英文逗号”...when 和最近的一个end相匹配 列出爵士的獲獎者、年份、獎頁(爵士的名字以Sir開始)。

    1K30

    MySQL基础(快速复习版)

    ; 12、【补充】isnull函数 功能:判断某字段或表达式是否为null,如果是,则返回1,否则返回0 2.2、条件查询 一、语法 select 查询列表 from 表名 where 筛选条件 二...(条件表达式,表达式1,表达式2):如果条件表达式成立,返回表达式1,否则返回表达式2 ②case情况1 case 变量或表达式或字段 when 常量1 then 值1 when 常量2 then 值2...表2 别名 on 连接条件where 筛选条件group by 分组列表having 分组后的筛选order by 排序列表limit 子句; 特点: ①查询的结果=主表中所有的行,如果从表和它匹配的将显示匹配行...,如果从表没有匹配的则显示null ②left join 左边的就是主表,right join 右边的就是主表 full join 两边都是主表 ③一般用于查询除了交集部分的剩余的不匹配的行 3、交叉连接...case when 条件1 then 语句1; when 条件2 then 语句2; … else 语句n; end [case]; 位置: 可以放在任何位置, 如果放在begin end 外面,作为表达式结合着其他语句使用

    4.5K20

    算法工程师-SQL进阶:强大的Case表达式

    本节先介绍一下SQL中高频使用的case表达式,请认真感受它的灵活与强大! ? 一、case表达式是什么 case 表达式是 SQL 里非常重要而且使用起来非常便利的技术,我们常用它来描述条件分支。...值在SQL语句中的位置非常灵活,可以放在select、where以及group by等多个地方。 在本题中要注意sql先执行group by,然后最后在执行select。...,如果count=1,则就选那一个俱乐部即可;如果有多个,怎么筛选flag='Y'的那个呢??...这个例子的技巧是:分组后将count(*)等聚合函数作为分支判断条件,和having筛选group有相似的作用,但是比having功能更强大的是,case可以多层嵌套使用,在小组内部还可以使用case表达式进行分支过滤和重构...当case表达式用在having子句中,可以对小组设置灵活的过滤逻辑; 当需要自定义排序顺序时,可以在order by中通过使用case表达式来实现; case表达式还可以应用在update中,根据不同的分支条件采取不同的更新策略

    2.3K20

    MySQL深入研究:表数据操作

    上面的例子都是查询出全部数据,下面我们要加一些条件进行筛选,这里就用到了我们的where语句,记住一点: 条件筛选是可以有多个的 等值查询 我们可以通过如下方式进行条件判断 select * from...from tb_user where account is null; is not null就是其中的关键点,与之相对的还有is null,意思正好相反 时间判断 很多情况下,如果我们想要通过时间段来匹配查询...再下一步,我们就需要对全部数据进行聚合,根据前面了解到的聚合函数,我们可以选择使用max() SELECT max(CASE type WHEN 1 THEN value END) '姓名',...SQL1只返回了一条数据,而且在查询的时候通过等值来判断的,就可以称为单行子查询 SQL2很明显,就是多行子查询 子查询除了用在where条件之后,也可以用在显示列中 select od.*, (select...如果想要对聚合查询出来的数据进行条件筛选,不能使用where来查询,需要通过having来筛选 select count(*), login_name from tb_user group by login_name

    58010

    SQL 进阶技巧(上)

    SQL 的一些进阶使用技巧 一、巧用 CASE WHEN 进行统计 来看看如何巧用 CASE WHEN 进行定制化统计,假设我们有如下的需求,希望根据左边各个市的人口统计每个省的人口 ?...使用 CASE WHEN 如下 SELECT CASE pref_name WHEN '长沙' THEN '湖南' WHEN '衡阳' THEN '湖南' WHEN...如果用 CASE WHEN 可以解决此类问题,如下: UPDATE Salaries SET salary = CASE WHEN salary >= 10000 THEN salary * 0.9 WHEN...,原因主要有两点 使用 GROUP BY 子句进行聚合时会进行排序,如果事先通过 WHERE 子句能筛选出一部分行,能减轻排序的负担 在 WHERE 子句中可以使用索引,而 HAVING 子句是针对聚合后生成的视频进行筛选的...九、灵活使用 HAVING 子句 这一点与上面第八条相呼应,对聚合结果指定筛选条件时,使用 HAVING 是基本的原则,可能一些工程师会倾向于使用下面这样的写法: SELECT * FROM (SELECT

    1.1K20

    那些年我们写过的T-SQL(上篇)

    FROM,从Sales.Orders表查询行 WHERE, 仅筛选ID为71的客户 GROUP BY,按固原ID和订单年度分组 HAVING, 筛选大于1个订单的组 SELECT,返回每组成员...WHERE字句:该字句中字段的选择对于查询性能影响很大,如果符合索引(包括组合索引,需要正确的顺序)条件,那么查询就会通过索引而不是全表扫描。...此外,有一点曾经困扰了我很久,就是如果我在where字句中使用YEAR(orderdate),还在select中使用YEAR(orderdate),那样不是重复计算了?...此外,该字句中可以使用不在SELECT列表中的字段排序,但如果使用了DISTINCT关键字,则必须使用SELECT列表中的列,否则由于单个结果行可能代表多个原行,造成排序的不清晰。...技巧性 通过使用CASE表达式来实现,形式上有一些奇怪 SELECT num1, num2 FROM dbo.tableB CASE WHEN num1 = 0 THEN 0 WHEN num1/num2

    3.2K100

    想学数据分析但不会Python,过来看看SQL吧(下)~

    过滤分组(HAVING) 在SQL入门中我们学过WHERE,它是对行数据进行筛选过滤的,那么,如果我想对创建的分组数据进行筛选过滤呢?...♂️如果想要获取筛选列的所有值,可以使用UNION ALL代替UNION,他们的使用方式是一样的。...使用示例: SELECT AVG(DISTINCT col_1) AS avg_dist_col_1 FROM table_1; 条件判断 CASE语句是用来做条件判断的,如果满足条件A,那么就xxx...需要注意的几点: CASE 语句始终位于 SELECT 条件中。 CASE 必须包含以下几个部分:WHEN、THEN和 END。...你可以在 WHEN 和 THEN之间使用任何条件运算符编写任何条件语句(例如 WHERE),包括使用 AND 和 OR 连接多个条件语句。

    3.1K30
    领券