2

我有两张桌子。

第一个表是“a”,包含字段 a.pr、a.info 和 a.id。第二个表是“b”,字段为 b.id 和 b.amount。

a.id = b.id,尽管多个 b.id 可能与单个 a.id 匹配。

我的SQL语句如下:

SELECT a.pr, a.info, a.id, SUM(b.amount) AS total
FROM   a 
LEFT JOIN b ON a.id=b.id
WHERE  a.pr = "549"
GROUP BY a.id

现在,这行不通。它会引发“不是 GROUP BY 表达式”错误。据我了解,我需要一个子查询,但是我发现的所有示例似乎都与我在这里尝试完成的完全匹配,而且我无法让它们中的任何一个正常工作。

在这种情况下,完整的 SQL 语句(带有子查询)会是什么样子?

4

2 回答 2

1

您应该按 select 子句中的所有字段进行分组:

SELECT a.pr, a.info, a.id, SUM(b.amount) AS total
FROM   a 
LEFT JOIN b ON a.id=b.id
WHERE  a.pr = "549"
GROUP BY a.pr, a.info, a.id

请参阅ORA-00979

于 2012-10-11T23:16:21.347 回答
0

正如 Ryan 指出的那样,所有没有聚合函数的列都需要成为 group by 子句的一部分

此链接提供了一个很好的解释 ,但为什么该列必须包含在聚合函数或 GROUP BY 子句中?

于 2012-10-12T05:41:49.007 回答