2017-10-12 59 views
0
SELECT `suburbcode` 
    FROM PROPERTY 
    HAVING count(*) <= 
    ALL(SELECT count(*) 
     FROM PROPERTY 
     GROUP BY `suburbcode`) 

我試圖找到在某列中出現次數最少的值。當我運行這段代碼時,它不會返回任何結果,但是當我做相反的操作時(count(*) >= ALL),它會起作用,併爲我提供發生次數最多的值。爲什麼會這樣?SQL代碼不適用於查找最小公倍數值,但相反(找到最常見的值)

回答

0

我認爲你缺少一個group by

SELECT suburbcode 
FROM PROPERTY 
GROUP BY suburbcode 
HAVING count(*) <= ALL (SELECT count(*) 
         FROM PROPERTY 
         GROUP BY `suburbcode` 
         ); 

如果我使用這種風格,我還是會傾向於寫:

SELECT suburbcode 
FROM PROPERTY 
GROUP BY suburbcode 
HAVING count(*) <= (SELECT count(*) 
        FROM PROPERTY 
        GROUP BY `suburbcode` 
        ORDER BY count(*) DESC 
        LIMIT 1 
        ); 

兩個版本做同樣的事情。

+0

現在有用,謝謝! – kr1s