SQL 解题思维

思维

1. 顺序

(个人理解,可能术语并不正确。)

  • 从里到外:从条件开始
  • 从外到内:从结果开始

例子:
(我现在的习惯)
SELECT出所有所求的结果,再JOIN所需的条件

SELECT st.s_name
FROM Student st 
JOIN
(
SELECT xxx
)

复杂时,也可反过来先写出子查询,用辅助表辅助做题。

而这一切很简单的一个本质就是,拿到题先看最后的表格是什么样,然后跟原表进行对比,然后再思具体思路。

2. 链条思维

各种条件是存在顺序关系的,需要理顺它们,然后采取从里往外或者从外往内的方式去解题。

这也是自己在做项目的时候发现的,就是在考虑当前条件a时,还必须考虑条件a的前提条件b包括需要排除的条件。

3. 行转列思维

SQL中的数据通通都是通过SELECT列中取的的,所以如果发现需求的字段并非原表中的列,则果断考虑使用条件语句进行行转列。

4. 思考特殊情况

  • NULL值处理(是转换还是过滤掉)
  • 除法遇到分母为零的情况(可能会报错)
  • 两个int值相除,可能还是一个int(根据不同的DBMS)

易错点

  • 窗口函数作为条件必须放在外层查询中,而不是当前查询的WHERE语句中
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值