我有两个表,Writer和Books。作家可以制作许多书籍。我想让所有全部作家谁生产最大数量的书籍。SQL查询:拥有number = max(number)不起作用
首先,我的sql查询是这样的:
SELECT Name FROM(
SELECT Writer.Name,COUNT(Book.ID) AS NUMBER FROM Writer,Book
WHERE
Writer.ID=Book.ID
GROUP BY Writer.Name
)
WHERE NUMBER=(SELECT MAX(NUMBER) FROM
(SELECT Writer.Name,COUNT(Book.ID) AS NUMBER FROM Writer,Book
WHERE Writer.ID=Book.ID
GROUP BY Writer.Name
)
它的工作原理。不过,我认为这个查询太长,并且存在一些重复。我想让这个查询更短。所以,我尝试另一个这样的查询:
SELECT Name FROM(
SELECT Writer.Name,COUNT(Book.ID) AS NUMBER FROM Writer,Book
WHERE
Writer.ID=Book.ID
GROUP BY Writer.Name
HAVING NUMBER = MAX(NUMBER)
)
然而,这HAVING子句不工作,我的sqlite的说,它的错误。 我不知道为什么。任何人都可以向我解释?谢谢!
你应该学会在查询中使用明确的'JOIN'语法。 –