时间:2021-05-02
学过 Sql,或了解过 Sql 的人,应该都会写下面这行代码:
? 1 select * from t上面代码表示查询 t 表中的所有信息,是 Sql 查询中最基础,最简单的一行代码,你可以把它理解成是其他编程语言中的Hello World。
select *只是你迈入 Sql 大门的第一步,在真实工作中,肯定不止这么简单的。我们来看一个例子。
现在有下面一个表 t ,存储了每个商品类别的成交明细,我们需要通过下面这张表获取订单量大于10对应的类别,并从中取出订单量前3的商品类别,会有一些测试的订单(catid=c666的为测试),我们需要过滤掉。
catid orderid c1 1 c1 2 c1 3 c2 4 c2 5 c3 6 … … c100 10000要做上面的需求,我们的 Sql 可以这么写:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 select catid, count(orderid) as sales from t where catid <> "c666" group by catid having count(orderid) > 10 order by count(orderid) desc limit 3上面的 Sql 代码中涉及到select、from、where、group by、having、order by、limit这7个关键词,基本上包括了 Sql 中所有的查询关键词,上面的顺序是这7个关键词的语法顺序,也就是你在写代码的时候,应该按照这个顺序写,那这7个关键词的执行顺序是什么样的呢?也就是先执行哪个再执行哪个?
可以肯定的是,肯定不是从上至下执行,如果是这样子的话,就没有写这篇文章的必要啦。
我一直坚持的一个态度就是,计算机在做事的时候和人没什么两样,基本逻辑和流程都一样,毕竟计算机也是人设计出来的。那既然这样,我们就来看看,如果是我们自己手动去做上面那个需求的时候,我们会怎么去做。
首先我是不是需要知道我要从哪个表去获取我想要的,也就是from;现在我知道从哪个表获取了,可是并不是这个表里面所有的信息都是我需要的,我需要把一些不需要的去掉(比如测试订单),或是把一些我需要的筛选出来,这就是where;现在我把我需要的订单明细筛选出来,可是我想要每个品类的订单量,这个时候是不是需要做一个分组聚合,也就是group by;分组聚合后的结果也并不是我们全部都要,我们只要大于10的品类,所以需要把大于10的筛选出来,非大于10的品类过滤掉,这就是having;现在我们想要的大部分信息都已经出来了,我们就可以用select把他们查询出来了;因为我们最后需要取前三的品类,所以我们需要把查询出来的结果进行一个降序排列,即order by;最后一步就是只把前三显示出来,做一个限制就行,也就是limit。
以上就是 Sql 语句的一个基本执行顺序,总结一下就是:
from-where-groupby-having-select-orderby-limit
到此这篇关于Sql的执行顺序的文章就介绍到这了,更多相关Sql的执行顺序内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://mp.weixin.qq.com/s/jAh3TDDLVxQeFkbRnNQt-Q
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇文章了。这篇笔记主要记录mysql的基础架构,一条查询
最近几天,《罗一笑,你给我站住》一文在朋友圈大量转发,引发舆论广泛讨论。而在昨晚,微信官方针对“罗一笑事件”做出说明,微信方面称,由于《罗一笑,你给我站住》一文
现有一些图片按顺序放置在一文件夹jogging1\下,如图:需要将其合并转换为一个视频。示例:环境:Win7+OpenCV3+VS2012#include#in
抢票是并发执行多个进程可以访问同一个文件多个进程共享同一文件,我们可以把文件当数据库,用多个进程模拟多个人执行抢票任务db.txt{"count":1}并发运行
在我写“你未必知道的JavaScript和CSS交互的5种方法”一文时,人们对于JavaScript和CSS是如何重叠的感到惊讶。今天,我将重点强调你能用CSS