首页 > 解决方案 > Oracle SQL 缺少表达式/语法错误

问题描述

所以基本上我的问题是我有以下查询,我收到一个错误,说有语法错误,但我可以弄清楚什么。我想知道我是否不能在子查询中使用HAVING COUNT()

SELECT FIELDNUM
FROM INTEREST 
GROUP BY FIELDNUM
HAVING COUNT(ACNUM) >= ALL(SELECT FIELDNUM
                       FROM INTEREST
                       HAVING COUNT(ACNUM));

语法错误显示在最后 2 个右括号中,即 HAVING COUNT(ACNUM ))

我试图得到的结果是最感兴趣的学者(ACNUMS)的领域(FIELDNUM),但我不允许使用 MAX 或 ROWNUM。

兴趣表具有 FIELDNUM、ACNUM 和DESCRIPTION 属性。

标签: sqloraclecounthaving

解决方案


如果查询的结构为:

SELECT FIELDNUM
FROM INTEREST 
GROUP BY FIELDNUM
HAVING COUNT(ACNUM) >= ALL (SELECT COUNT(ACNUM)
                            FROM INTEREST
                            GROUP BY FIELDNUM
                           );

这不是我推荐的编写逻辑以获取fieldnum表中出现次数最多的 s 的方式,但它是一种有效的方法。


推荐阅读