错误 - ORA-00979: 不是 GROUP BY 表达式,但在我删除 f.film_no AS "Film Number" 时有效
Posted
技术标签:
【中文标题】错误 - ORA-00979: 不是 GROUP BY 表达式,但在我删除 f.film_no AS "Film Number" 时有效【英文标题】:Error - ORA-00979: not a GROUP BY expression but works when I remove f.film_no AS "Film Number" 【发布时间】:2020-03-30 11:34:33 【问题描述】:SELECT f.title AS "Film Title",f.film_no AS "Film Number", MIN(c.fee) AS "Lowest Contract Cost"
FROM film f, contract c
WHERE f.film_no = c.film_no
GROUP BY f.title
HAVING MIN(fee) > 7000000;
当我运行它时,它会出现错误 ORA-00979: not a GROUP BY expression 但是当我删除 'f.film_no AS "Film Number" 时它会起作用吗?
这个完全不行
SELECT d.firstnames AS "First Name", COUNT(f.title) AS "Number of Films"
FROM director d, film f
WHERE d.director_id = f.director_id
GROUP BY d.surname
HAVING COUNT(f.title) > 1;
感谢任何帮助
【问题讨论】:
【参考方案1】:错误不是很明显吗?您在SELECT
中有一个不在GROUP BY
中的未聚合列。因此,您可以使用聚合函数或包含它。
另外,切勿在 FROM
子句中使用逗号。 始终使用正确、明确、标准、可读的JOIN
语法。
所以:
SELECT f.title AS "Film Title", f.film_no AS "Film Number",
MIN(c.fee) AS "Lowest Contract Cost"
FROM film f JOIN
contract c
ON f.film_no = c.film_no
GROUP BY f.title, f.film_no
HAVING MIN(fee) > 7000000;
【讨论】:
@Jackawan 。 . .学习使用JOIN
!永远不要在 FROM
子句中使用逗号。以上是关于错误 - ORA-00979: 不是 GROUP BY 表达式,但在我删除 f.film_no AS "Film Number" 时有效的主要内容,如果未能解决你的问题,请参考以下文章
ORA-00979: 在使用子查询查询视图时不是 GROUP BY 表达式
错误 - ORA-00979: 不是 GROUP BY 表达式,但在我删除 f.film_no AS "Film Number" 时有效
为啥这不起作用? ORA-00979: 不是 GROUP BY 表达式