在MySQL中执行子句的预定义顺序是什么?它是否在运行时确定,并且此顺序正确吗?
FROM clause
WHERE clause
GROUP BY clause
HAVING clause
SELECT clause
ORDER BY clause
MySQL语句的实际执行有些棘手。但是,该标准确实指定了查询中元素解释的顺序。这基本上是在您指定的顺序,但我想HAVING
和GROUP BY
能来后SELECT
:
FROM
条款WHERE
条款SELECT
条款GROUP BY
条款HAVING
条款ORDER BY
条款这对于了解如何解析查询很重要。例如,您不能使用SELECT
在WHERE
子句中的定义的列别名,因为会在WHERE
之前解析SELECT
。另一方面,这样的别名可以在ORDER BY
子句中。
至于实际执行,这实际上取决于优化程序。例如:
. . .
GROUP BY a, b, c
ORDER BY NULL
和
. . .
GROUP BY a, b, c
ORDER BY a, b, c
两者都具有ORDER BY
根本不执行的效果-因此不会在之后执行GROUP BY
(在第一种情况下,效果是从中删除排序GROUP BY
,在第二种情况中,效果仅是GROUP BY
已经执行了)。
问题内容: 是否可以执行这样的mysql查询? 我需要在一般的“ where”子句中使用子查询的结果。 问题答案: 您可以将其包装在子查询中,如下所示:
问题内容: 这个问题与执行顺序无关。这只是关于ORDER BY。 在标准执行中是: FROM WHERE GROUP BY HAVING SELECT ORDER BY TOP 编辑:这个问题或多或少是“ 执行ORDER BY表达式时SQL Server是否应用短路评估吗? ”的答案是有时!我只是还没有找到一个合理的理由。参见编辑#4。 现在假设我有一个这样的声明: 这不是我要执行的真实语句,而只
问题内容: 我已经读过这个问题,我的一个同事让我感到怀疑: 在过滤查询中,何时应用过滤器?在执行查询之前还是之后?什么时候缓存结果? 如果事先应用了过滤器,那么在过滤器中复制查询部分不是一件好事吗?如果之后应用了筛选器,那么我将无法理解缓存的内容。 问题答案: 幸运的是,ES为您提供了两种类型的过滤器供您使用: 在第一种情况下,过滤器将应用于查询找到的所有文档。在第二种情况下,将在查询运行之前过滤
前面我们介绍了如何使用 SELECT、INSERT、UPDATE 和 DELETE 语句对 MySQL 进行简单访问和操作。下面在此基础上开始学习子查询。 子查询是 MySQL 中比较常用的查询方法,通过子查询可以实现多表查询。 子查询指将一个查询语句嵌套在另一个查询语句中。子查询可以在 SELECT、UPDATE 和 DELETE 语句中使用,而且可以进行多层嵌套。在实际开发时,子查询经常出现在
问题内容: 如何在Firebase Android中查询SQL IN子句?我想在Firebase Recycler适配器中使用它,以便根据某些条件仅检索某些子级。类似于以下语句: 我需要一个Firebase查询才能在Firebase Recycler适配器中使用它。 问题答案: 我找到了解决方案:我们无法使用。相反,我们必须创建可扩展的自定义适配器。 要将值传递给此适配器,首先我们必须使用检索数据
问题内容: 我正在执行此查询: 我正在尝试使其返回如下内容: 但是,我得到了错误: #1242-子查询返回的行数超过1。 我尝试将语句放置在子查询中,但是收到无效的语法错误。 问题答案: 您可以使用简单的分组方式在没有子查询的情况下进行尝试: 使用GROUP BY时,未分组的任何列都必须具有聚合子句(fe SUM或COUNT。)因此,在这种情况下,您必须对县名称,precienct.id和prec