0

我收到了这个预言错误:

ORA-00979: not a GROUP BY expression
00979. 00000 -  "not a GROUP BY expression"
*Cause:    
*Action:
Error at Line: 1 Column: 17

运行以下查询时:

SELECT M.EMAIL, M.FNAME, M.LNAME, COUNT(*) 
FROM MEMBER M, FRIENDSHIP F  
WHERE (M.EMAIL = F.USER1 OR M.EMAIL = F.USER2 ) AND 
        F.TYPE = 'Family'
GROUP BY M.EMAIL

当我删除除M.EMAILSELECT子句之外的所有字段时,它会起作用,但是一旦我添加另一个字段,例如M.FNAME得到相同的错误!

这是怎么回事?

4

2 回答 2

2

将所有非聚合列SELECT放入GROUP BY. 另外,请注意,这将消除所有EMAIL具有多个FNAMEand的行LName。每个 email-Fname-Lname 组合只有一行。

SELECT M.EMAIL, M.FNAME, M.LNAME, COUNT(*) 
FROM MEMBER M, FRIENDSHIP F  
WHERE (M.EMAIL = F.USER1 OR M.EMAIL = F.USER2 ) AND 
        F.TYPE = 'Family'
GROUP BY M.EMAIL, M.FNAME, M.LNAME
于 2013-09-13T04:28:23.403 回答
1

试试下面的查询,它会解决你的问题:)

  SELECT M.EMAIL, M.FNAME, M.LNAME, COUNT(*) 
  FROM MEMBER M, FRIENDSHIP F  
  WHERE (M.EMAIL = F.USER1 OR M.EMAIL = F.USER2 ) AND 
    F.TYPE = 'Family'
  GROUP BY M.EMAIL,M.FNAME,M.LNAME

注意:如果您在 Select 子句中使用聚合函数,我们需要将除聚合函数值列之外的所有列名按函数分组。

于 2013-09-13T04:34:45.933 回答