只是对SQL语法感到好奇。所以如果我有
SELECT
itemName as ItemName,
substring(itemName, 1,1) as FirstLetter,
Count(itemName)
FROM table1
GROUP BY itemName, FirstLetter
这将是不正确的,因为
GROUP BY itemName, FirstLetter
真的应该是
GROUP BY itemName, substring(itemName, 1,1)
但是为什么我们不能仅仅为了方便而使用前者呢?
就像按以下顺序执行查询一样实现SQL:
对于大多数关系数据库系统,此顺序说明了哪些名称(列或别名)有效,因为它们必须在上一步中引入。
因此,在Oracle和SQL Server中,不能在SELECT子句中定义的GROUP BY子句中使用术语,因为GROUP
BY是在SELECT子句之前执行的。
但是也有例外:MySQL和Postgres似乎还具有其他一些聪明之处。
问题内容: 我有一张标签表,想从列表中获得计数最高的标签。 样本数据如下所示 使用 让我得到正在寻找的完美数据。但是,我想对它进行组织,以使最高的标签数排在首位,并限制它仅向我发送前20个左右。 我试过了 而且我不断收到“组功能的无效使用-ErrNr 1111” 我究竟做错了什么? 我正在使用MySQL 4.1.25-Debian 问题答案: 在所有版本的MySQL中,只需在SELECT列表中为聚
问题内容: 我有两个表(1&2)应该合并到第三(3)个表中。 表1:F_Number,A_Number, A_Weight 表2:A_Number,A_Country表3:F_Number,A_Country,A_Weight 第三表应按F_Number分组,求和A_Weight,其中A_Country具有相同的值。到目前为止,表的联接工作正常: 结果是一个像这样的表: F_Number; 一个国
问题内容: 我在为MySQL编写SQL查询时遇到一些问题。我有一个具有以下结构的表: 我想创建一个查询,该查询从表中提取以下信息: 查询结果应如下所示: 当然,每个唯一的“ id”具有更多行。 我已经尝试过一些查询,例如 这将返回正确的结果,但是我必须使用“ pass”的其他可能值(最多7个)来扩展它 我尝试在AVG中使用嵌套的SELECT,但这没有用,因为我没有弄清楚如何正确地将其限制为当前的’
问题内容: 我的数据库具有以下设置 我想像这样输出它们: 我按组使用它们,但效果很好,但是我想遍历每个组并显示该组的内容。我该怎么做? 问题答案: 我建议只使用一个简单的查询来获取所有行,并按类别ID进行排序。仅当类别的值与上一行不同时才输出类别。
问题内容: 我的mysql数据库中有一个表,该表有两列:组和子组。见下文。 我正在尝试获取每个唯一的夫妇组/子组的记录数。 这是我期望的: 阅读一些帖子后,我尝试使用count()的group by尝试了几个sql查询,但是我无法获得预期的结果。我怎样才能解决这个问题? 问题答案: 我认为您正在寻找:
问题内容: 我有两张桌子。表A列出了员工姓名。表B是一个复杂的表,其中包含有关员工打来的电话的信息。 我的目标是制作一个包含“名称”和“ callCount”列的表。我的目标是“左加入”和“分组依据”,但是我一直想念没有打过电话的员工。我怎样才能只保留名称并在其中放置零? 也许我很亲密,有人可以指出我的错字吗?在此先感谢您的帮助,以下是SQL: 问题答案: 这是一个JOIN而非NULL问题:您的过