介绍

这不是什么很深的技术问题,编程技巧有多好。这与一个人的能力的发展并没有直接的关系是很有必要的,但是你会知道这些SQL编写的,会有解决问题和优化有很大的帮助。这不是一个复杂的知识点,而是一个非常基本的SQL的基础。没有这个,你已经与普通水泥盖房子;你用高高的水泥房子。

但是,这是一个很小的知识点,你可以去调查身边的同事和朋友,你会得到一个惊喜。

由于这篇文章是在一种突然意义上写的,所以以下SQL语句没有被测试。

查看SQL语句的以下部分:

复制代码代码如下:# 1

选择ID,计数(id)作为总



从学生



组ID



总> 2

# 2

选择ID,计数(id)作为总



从学生



组ID



以总

# 3

选择+名+姓名,计数(*)作为计数



从学生



组的名称



你认为哪一个不能成功

以下是SELECT语句的逻辑执行顺序:

1.from

2.on

3.join

4.where

5.group的

6.with CUBE或ROLLUP

7.having

8.select

9.distinct

10.order的

11.top

微软指出SELECT语句的实际物理执行顺序可能与查询处理器的顺序不同。

几个例子

例1:

复制代码代码如下所示:

选择ID,计数(id)作为总



从学生



组ID



总> 2

想一想熟悉的SQL语句是的,非常基本的组查询,但不能成功执行,因为执行的序列高于选择。

实际执行顺序如下所示:

1.from学生

2.group ID

3.having总> 2

4.select ID(ID)总计数

显然,总的是在选择id的最后一句之后生成的新别名,总数为id(id)。因此,在执行总> 2时无法确定总数。

例二

复制代码代码如下所示:

选择ID,计数(id)作为总



从学生



组ID



以总



实际执行顺序如下:

1.from学生

2.group ID

3.SELECT ID, COUNT (ID) AS TOTAL

4.order总

这一次没有问题,可以成功地执行。如果按订单总数改为按计数(ID)怎么办

复制代码代码如下所示:

选择ID,计数(id)作为总



从学生



组ID



按计数顺序(id)



实际执行命令:

1.from学生

2.group ID

3.select ID(ID)总计数

4.order计数(ID)

是的,它可以成功地执行,在SQL执行计划,这是由总above.order由订单执行后选择相同的,所以你可以使用别名总。

例三

复制代码代码如下所示:

选择+名+姓名,计数(*)作为计数



从学生



组的名称



实际执行命令:

复制代码代码如下所示:

从学生



组的名称



选择+名+姓名,计数(*)作为计数



很明显,在执行组名时,还没有创建别名,因此无法成功执行该别名。

总结

记得随口问了一些人这个问题,不管是谁都不知道我们什么时候会故意笑,当然也不会笑出声来。但结果是有一些人没有注意到这一点的知识。它只是一个友好的提醒,它在这里。