GROUP BY,HAVING和JOINS有问题

时间:2014-11-21 00:32:36

标签: sql oracle oracle10g having

因此,此查询的目的是显示犯罪分子的ID,姓氏和名字(所有这些都可以在" Criminals"表格中找到),然后只显示有多个句子的罪犯 - 我通过使用HAVING子句来表明罪犯必须有多个句子_id(句子表主键)的条件。但是,当我输入以下代码时,我收到一条错误,上面写着"用于命名连接的列(NATURAL连接或带有USING子句的JOIN)不能有显式限定符。

SELECT c.criminal_id, c.last, c.first
 FROM criminals c JOIN sentences s USING (criminal_id)
 GROUP BY s.criminal_id
 HAVING COUNT(s.sentence_id) > 1;

我尝试删除限定符(我理解为在列名之前的c。和s。),但后来我得到一个错误,表示查询不是GROUP BY表达式。我把头发拉出来试图弄清楚这件事。如果你能提供帮助,我真的很感激。谢谢。

1 个答案:

答案 0 :(得分:0)

没关系!如果有人看到这个,我发现了真正的错误。我删除了限定符。真正的问题是,在使用GROUP BY子句时选择多个列时,必须是GROUP BY ALL非聚合函数。所以我的正确代码是:

SELECT criminal_id, last, first
 FROM criminals JOIN sentences USING (criminal_id)
 GROUP BY criminal_id, last, first
 HAVING COUNT(sentence_id) > 1;

希望这可以帮助其他任何偶然发现这个问题的人。