2017-10-12 55 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