mysql在子查询中使用自定义变量和条件语句实现函数效果的查询语句

前言

mysql语法简单,但也正因如此,在检索稍微复杂的数据时,有时可能需要连续的子查询的嵌套以及表连接的组合应用,其逻辑上的循环嵌套远不如通过中间变量来存储易于理解。但一般情况下,我们倾向于通过一个分号来输出一次查询结果,而不是保存为视图进行二次查询。这样的情况下,对于不是特别复杂的检索逻辑我们可以尽量通过自定义变量来存储值,达到编程语言中的函数效果,而不是完全依靠where子句进行一箩筐的添加条件让机器思考,这样既易于编写又提升了速度。

自定义变量和条件语句语法规则

自定义变量规则

@变量名:=固定值 | 函数调用 | 条件语句		别名

mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;		# 初始化变量

mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price;	# 引用变量

条件语句

在非funtionprocedure的一般查询语法中,sql中的条件语句和高级编程语言中的条件语句用法上有所不同,sql中的if更像一个函数,而不是代表一个语句,但也有和编程语言中相差不大的条件语句,比如case。简单介绍一下3种在一般条件语句中的用法,不做更深的理解。不深究的原因可以看下例题思路解析部分。

IF( expr1 , True_expr , False_expr )	#	expr1为真返回True_expr, 假则返回False_expr

IFNULL( expr1 , Null_expr )	#	expr1的值不为空仍返回该值, 值为空则返回Null_expr

case when 条件1 then 结果1 
		when 条件2 then 结果2 
		else 结果N 
end

例题简介

Leetcode 180:编写一个 SQL

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值