2011-07-02 22 views
0

我想在mysql中每次重複(其值)超過x次的列的行數,每當我嘗試執行此查詢時出現錯誤:作爲在mysql中使用AS「名稱」命名的列的條件

SELECT DISTINCT 
    idLogin, count(idLogin) AS "cou" 
FROM 
    `products` AS t 
GROUP BY 
    idLogin 
HAVING 
    t.cou > 2 

爲什麼這個錯誤是發生

+0

有什麼錯誤? – Rahul

回答

1

使用這一個

SELECT DISTINCT idLogin, count(idLogin) AS cou FROM `products` 
GROUP BY idLogin HAVING cou > 2 
0

從別名的列名稱中刪除雙引號。

MySQL使用單引號來轉義表名和列名,而不是雙引號。

+0

如果您SET SQL_MODE = ANSI或ANSI_QUOTES,MySQL支持分隔標識符的雙引號。 –

0

相關名稱t沒有列cou。只需使用這個:

HAVING cou > 2 

PS:DISTINCT在您的查詢中是多餘的。 GROUP BY確保每個不同的值只有一行idLogin

1

你可以把表達count(idLogin)直接在其克勞斯....

它不會給任何錯誤..而且將更加understable以及... 。

否則,你可以做一兩件事 -

select idLogin,cou from (
SELECT DISTINCT idLogin, count(idLogin) AS cou 
FROM products 
GROUP BY idLogin) t 
where t.cou >2