我有两个oracle表:
用户:ID,USERNAME,PASSWORD,ROLE
ARCHIVE_POSESSION:ID,USERID,ARCHIVEID
我要做的是获取一个返回以下结果集的查询:
用户名,角色,档案数量
到目前为止一直很好,但我无法绕过查询,我仍然是初学者。到目前为止,这是我得到的地方:
SELECT users.ID, USERNAME, ROLE, count(archive_posession.USERID)
from users inner join
archive_posession on
users.id = archive_posession.USERID
group by
archive_posession.USERID ;
但它给了我这个错误
ORA-00979: not a GROUP BY expression
任何提示?我确定group by应该用于聚合函数,但是在这种情况下我被激发了。
答案 0 :(得分:2)
您选择的字段要么在group by中声明,要么使用aggregate function。 例如
SELECT archive_posession, Max(USERID USERNAME), Max(ROLE), count(archive_posession.USERID)
FROM users INNER JOIN
archive_posession ON
users.id = archive_posession.USERID
GROUP BY
archive_posession.USERID ;
应该这样做。
解决此问题的原因是因为Group By返回单行。因此,您应该找到一种方法来收集仅在一行中不在分组中的所有选定字段
答案 1 :(得分:1)
在我看来,你正在尝试做类似
的事情"metadata": {
# Other metadata
"enableExternalDirectory": true
}
GROUP BY查询的SELECT列表中的所有列必须是GROUP BY列表的成员,或者必须是聚合函数,例如COUNT。在您的查询中,USERNAME和ROLE不是GROUP BY列表的成员,因此您生成的查询已生成。