2011-01-29 66 views
0

我使用MySQL和編寫此查詢:SQL - 有聚集在MySQL

select gauno, count(potno) 
from druide_potion 
group by gauno 
having count(potno) = min(count(potno)) 

然而MySQL說: 「#1111 - 無效使用組功能」。

這是什麼請求不正確? (當我刪除HAVING時,我沒有錯誤,但也沒有預期的結果)。

謝謝。

回答

3

在having子句中,每個聚合只返回一個值,因此請求min()count()是沒有意義的。

你可能在尋找這樣的事情:

select * 
from druide_potion 
group by 
     gauno 
having count(potno) = 
     (
     select count(potno) 
     from druide_potion 
     group by 
       gauno 
     order by 
       count(potno) 
     limit 1 
     ) 

這將與行的最低金額返回所有gauno與非空potno列。

+0

SYBASE數據庫返回我的結果,他們沒有其他的方法來搜索我需要什麼?這似乎太複雜了,我認爲他們是一個更好的方法...... – 2011-01-29 13:10:50

0
select gauno, count(potno) 
    from druide_potion 
group by gauno 
order by count(potno) 
limit 1 
+0

如果有多個gauno與最低`count(potno)`,這將返回只有一個 – Andomar 2011-01-29 13:03:43

0

正確的ANSI查詢

SELECT D.* 
FROM 
(
    select min(cnt) MinCount 
    FROM 
    (
     select gauno, count(potno) cnt 
     from druide_potion 
     group by gauno 
    ) 
    Counted1 
) MinCounted 
inner join 
(
    select gauno, count(potno) Cnt 
    from druide_potion 
    group by gauno 
) Counted2 
    on MinCounted.MinCount = Counted.Cnt 
inner join druide_potion D 
    ON D.gauno = Counted2.gauno