sql按日期查询语句怎么写_SQL方法小结|思维转变

在sql分组查询时,会出现这样一个问题:一般思路和sql运行顺序不同。

通常,解题的思路是:目的,获得什么——怎么做——怎么呈现

而sql的查询运行顺序是:怎么查——查什么——怎么呈现

那么如果按照一般思路写sql语句,就会经常出错。

比如查看score表里,按课程号分组后的所有信息。
按照一般解题思路:从score获得所有信息——按分组获得——直接呈现
而sql的查询运行顺序:from score,group by 课程号——select *——直接呈现

1a8c53723de82c17e0e0c4afd63c7acb.png

这样的语法是错误的。这是因为sql先运行了group by语句,而group by语句返回的是统计数据,这就限制了查询的内容(select),不能够查询组内数据,也同样限制了呈现的方式(order by,limit),不能按照组内字段呈现。

就算按照一般解题思路去写sql语句,即使不报错,得出的结果也常不合题意。

这时候就要求我们转变思路,在第一步“目的,获得什么,查询什么”里我们就要分析用什么方法。

8992b7b559a175463633a33e9deb9bb0.png

假如查询的是各科最低成绩,那么我们使用简单查询即可;

假如查询的是各科最低成绩,包括学号,那么就要用到复杂查询中的关联子查询
(因为学号是组内字段);

假如查询的是各科成绩排名,包括所有的信息,那么就要用到开窗函数
(因为所有信息中包括组内字段,并且要求返回多条记录)。

总结:

1、select语句、order by语句受到group by语句限制

2、转变思路:获得什么+方法——怎么做——怎么呈现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值