奇怪的Having和Group By子句行为生成“'having'子句中的未知列”错误

德米特里

我在MySQL数据库中有两个表

表格1

mysql> SELECT ID FROM table1;
+----+
| id |
+----+
|  6 |
+----+
1 row in set (0.00 sec)

表2

mysql> SELECT * FROM table2;
+----+----------+------------------------+----------------------+
| id | placeId  | dictionaryId           | dictionaryCode       |
+----+----------+------------------------+----------------------+
| 54 |        6 |                      1 | MarketingTerritoryID |
| 53 |        6 |                      1 | PlaceTypeID          |
+----+----------+------------------------+----------------------+
2 rows in set (0.00 sec)

您能否解释一下以下sql查询为何起作用:

SELECT 
   table1.id
FROM table1
  LEFT JOIN table2 AS placeType
    ON table1.id = placeType.placeId
      AND placeType.dictionaryCode = 'PlaceTypeID'
  LEFT JOIN table2 AS region
    ON table1.id = region.placeId
      AND region.dictionaryCode  = 'MarketingTerritoryID'
GROUP BY region.dictionaryId
HAVING region.dictionaryId = MIN(1)

...和另一个

SELECT 
   table1.id
FROM table1
  LEFT JOIN table2 AS placeType
    ON table1.id = placeType.placeId
      AND placeType.dictionaryCode = 'PlaceTypeID'
  LEFT JOIN table2 AS region
    ON table1.id = region.placeId
      AND region.dictionaryCode  = 'MarketingTerritoryID'
GROUP BY region.dictionaryId, placeType.dictionaryId
HAVING region.dictionaryId = MIN(1)

返回sql错误: *Unknown column 'region.dictionaryId' in 'having clause'*

请注意,这两个查询之间的区别仅在于group子句:第二个查询也按以下方式分组 placeType.dictionaryId

这是来自sqlfiddle的代码:

  1. 首先查询http://sqlfiddle.com/#!9/46a85/7
  2. 第二个查询http://sqlfiddle.com/#!9/46a85/8
德米特里

我已将错误报告给mysql团队。这是链接:https : //bugs.mysql.com/bug.php?id=82317

目前它已验证状态。让我们看看他们会回答什么。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 HAVING 子句中引用 AS

来自分类Dev

MySQL Group by和Having子句问题

来自分类Dev

使用MySQL和Java的where子句中的未知列错误

来自分类Dev

HAVING子句中的CASE语句

来自分类Dev

无法删除带有GROUP BY和HAVING子句的语句

来自分类Dev

使用group by和having子句获取最大倍数行

来自分类Dev

在WHERE子句中使用!=时,SELECT不起作用(使用GROUP BY和HAVING COUNT)

来自分类Dev

SUM列上的HAVING子句

来自分类Dev

HAVING子句影响结果

来自分类Dev

依靠HAVING子句的麻烦

来自分类Dev

SQL,HAVING子句说明

来自分类Dev

HAVING子句怎么了?

来自分类Dev

在JPA查询中使用GROUP BY / HAVING子句

来自分类Dev

SQL错误未知列在where子句中?

来自分类Dev

在查询中组合 WHERE 和 HAVING 子句

来自分类Dev

该列在HAVING子句中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY中

来自分类Dev

MySQL错误:HAVING子句中使用了非分组字段

来自分类Dev

在HAVING和WHERE子句中使用时,窗口函数字段的别名导致“未找到”错误

来自分类Dev

mysql查询中的having子句

来自分类Dev

使用HAVING COUNT>子句查询

来自分类Dev

mysql查询中的having子句

来自分类Dev

允许在HAVING子句中使用别名的性能影响

来自分类Dev

在SQLAlchemy中的HAVING()子句中使用标签

来自分类Dev

在where / having子句中传递要匹配的列表

来自分类Dev

TSQL限制记录,其中HAVING子句中count()= 1

来自分类Dev

MySQL是否消除SELECT和HAVING / GROUP BY子句之间的公共子表达式

来自分类Dev

在同一查询中使用Join,Group By,Having和Where子句

来自分类Dev

符合GROUP BY和HAVING子句的第一个记录

来自分类Dev

您如何在子查询中使用group by / having子句?

Related 相关文章

热门标签

归档