服务器更改后where子句中的未知列

时间:2015-11-09 13:36:59

标签: mysql subquery mysql-5.6 mysql-5.7

我有一个有点地狱般的查询(遗留数据库),这使我找不到"列未找到"错误。它看起来像这样(非常简化):

select somecolumn as name,
...
...,
(select sum(someothercolumn) from table where somecolumn = name)
from table
where (conditions)

关于这一点的奇怪之处在于它只在我们更改服务器时才开始发生。在我们移动数据库之前,查询一切正常。旧的MySQL版本是5.6.14。新服务器正在运行5.7.9。

这是MySQL版本的问题吗?可能是某些设置更改了5.7的默认值?我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

您可以在此查询中为每个表使用别名吗?并且不要忘记在每列之前插入别名字母。 示例:

选择r.somecolumn作为名称,

...

,(从表中选择sum(s.someothercolumn)为s,其中s.somecolumn = r.name)

来自表r

其中(r.conditions)

答案 1 :(得分:0)

如果您的服务器中有mysql 5.7.9,则必须知道该版本中存在错误 尝试使用mysql 5.7.11来解决这个问题。