我使用MySQL和編寫此查詢:SQL - 有聚集在MySQL
select gauno, count(potno)
from druide_potion
group by gauno
having count(potno) = min(count(potno))
然而MySQL說: 「#1111 - 無效使用組功能」。
這是什麼請求不正確? (當我刪除HAVING時,我沒有錯誤,但也沒有預期的結果)。
謝謝。
我使用MySQL和編寫此查詢:SQL - 有聚集在MySQL
select gauno, count(potno)
from druide_potion
group by gauno
having count(potno) = min(count(potno))
然而MySQL說: 「#1111 - 無效使用組功能」。
這是什麼請求不正確? (當我刪除HAVING時,我沒有錯誤,但也沒有預期的結果)。
謝謝。
在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
列。
select gauno, count(potno)
from druide_potion
group by gauno
order by count(potno)
limit 1
如果有多個gauno與最低`count(potno)`,這將返回只有一個 – Andomar 2011-01-29 13:03:43
正確的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
SYBASE數據庫返回我的結果,他們沒有其他的方法來搜索我需要什麼?這似乎太複雜了,我認爲他們是一個更好的方法...... – 2011-01-29 13:10:50