因此,此查询的目的是显示犯罪分子的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表达式。我把头发拉出来试图弄清楚这件事。如果你能提供帮助,我真的很感激。谢谢。
答案 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;
希望这可以帮助其他任何偶然发现这个问题的人。