2014-05-23 58 views
1

我有这个以下查询,我想要显示的结果,其中masini> 2但是当我运行查询它说,'masini'不是一个现有的列,但它是我在第一个定义的自定义列的名称行。我是MySQL的新手..任何人都可以将我指向正确的方向吗? 这是我的查询:MySQL。查询。未知的列

SELECT pers.serie_buletin AS persoana, COUNT(prop.serie_buletin) AS masini 
FROM persoana pers 
JOIN proprietate prop 
ON pers.id_persoana = prop.serie_buletin 
WHERE masini > 2 
GROUP BY persoana ; 

我定义的列上这一行,在这部分“COUNT(prop.serie_buletin)AS马西尼”,但它说:“错误代码:1054未知列‘马西尼’在' where子句'“。我错过了什么?

回答

2

WHERE更改为HAVING

GROUP BY persoana 
HAVING masini > 2; 

MySQL的HAVING子句在SELECT语句用来指定行或聚集体的组 过滤条件。

MySQL HAVING子句通常与GROUP BY子句一起使用。当 与GROUP BY子句一起使用时,可以将过滤条件应用于出现在GROUP BY子句中的列 。如果省略GROUP BY子句 ,则MySQL HAVING子句的行为与WHERE子句相同。 请注意,MySQL HAVING子句将条件应用于每个 组行,而WHERE子句将条件应用于每个 单个行。

source

+0

三个很好的答案,但我会标记你是最好的。充分解释和一切。谢谢。 – MrSilent

1
​​
+1

在'GROUP BY'之后出现的'HAVING'子句中,您可以按名称引用masini。 –

+0

啊 - 我住在甲骨文世界 - 甲骨文似乎不支持。感谢您的信息。现在我知道mysql了! – Bob

1

你不能把列别名where子句。永远。

在这种情况下,虽然,你真的需要having条款:

SELECT pers.serie_buletin AS persoana, COUNT(prop.serie_buletin) AS masini 
FROM persoana pers 
JOIN proprietate prop 
ON pers.id_persoana = prop.serie_buletin 
GROUP BY persoana 
HAVING masini > 2;