【发布时间】:2020-03-12 13:34:50
【问题描述】:
我正在尝试获取在我的数据库中拥有比特定作者更多书籍的所有作者的姓名。
架构:(LIVRO 表示书)
我有这个问题:
SELECT AUTORIA.CODAUTOR, AU.NOMEAUT, COUNT(AUTORIA.CODLIVRO) FROM AUTORIA
INNER JOIN AUTOR AS AU ON AU.CODIGO = AUTORIA.CODAUTOR
GROUP BY AUTORIA.CODAUTOR;
这就是回报:
+----------+------------------+-------------------------+
| CODAUTOR | NOMEAUT | COUNT(AUTORIA.CODLIVRO) |
+----------+------------------+-------------------------+
| 1 | MACHADO DE ASSIS | 7 |
| 2 | NAVATHE | 6 |
| 3 | ELMASRI | 7 |
+----------+------------------+-------------------------+
现在我需要使用列 COUNT(AUTORIA.CODLIVRO) 的值大于作者 NAVATHE 的该列值的行来过滤此结果。
这就是我尝试过的:
SELECT AUTORIA.CODAUTOR, AU.NOMEAUT, COUNT(AUTORIA.CODLIVRO) FROM AUTORIA
INNER JOIN AUTOR AS AU ON AU.CODIGO = AUTORIA.CODAUTOR
GROUP BY AUTORIA.CODAUTOR /* Group books by author code */
/* Get authors with more books than NAVATHE */
HAVING COUNT(AUTORIA.CODLIVRO) > COUNT( /* Count how many books NAVATHE has */
SELECT AUTORIA.CODLIVRO FROM AUTORIA /* Obtain the codes of the books of NAVATHE */
INNER JOIN AUTOR AS AU ON AU.CODIGO = AUTORIA.CODAUTOR AND AU.NOMEAUT = 'NAVATHE'
);
但是这个查询给了我一个错误。
【问题讨论】:
-
请不要将文本粘贴为屏幕截图。您的 SQL 控制台应该是文本副本,而不是屏幕截图。
-
好的,我会编辑的。
-
谢谢,确实有帮助
标签: mysql sql join count having-clause