2014-05-23 97 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;