2011-07-02 8 views
0

私はこのクエリを実行しようとするたびに、x回以上繰り返された列を持つ行をカウントしようとしています:mysqlでAS "name"という名前の列としての条件

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

このエラーが

+0

を? – Rahul

答えて

1

使用この1

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

が起こっている理由は、エイリアス列名から二重引用符を削除します。

MySQLは二重引用符ではなく、エスケープするテーブルとカラム名に単一のバッククォートを使用します。

+0

MySQLは、 'SET SQL_MODE = ANSI'または' ANSI_QUOTES'の場合、区切り識別子の二重引用符をサポートしています。 –

0

相関名tには列がありませんcou。ただ、これを使用する:

HAVING cou > 2 

PS:DISTINCTは、クエリで冗長です。 GROUP BYは、固有値ごとに1つの行が確実にidLoginになるようにします。あなたが...それはすべてのエラーを与えることはありません....クラウズを持つに直接

をその表現count(idLogin)を置くことができますし、同様に、よりunderstableになります

1

... 。

または他のあなたは一つのことを行うことができます - エラーが何

select idLogin,cou from (
SELECT DISTINCT idLogin, count(idLogin) AS cou 
FROM products 
GROUP BY idLogin) t 
where t.cou >2 
関連する問題